Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
BigOblom
119 / 119 / 7
Регистрация: 30.06.2010
Сообщений: 444
#1

Scroll listview - Программирование Android

09.01.2015, 01:36. Просмотров 897. Ответов 19
Метки нет (Все метки)

Доброй ночи всем.
Есть активити со следующим layout.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/tvTitleQuestion"
        android:layout_gravity="center_horizontal" />
 
    <ListView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/lvQuestions" />
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Готово"
        android:id="@+id/btnFinal"
        android:layout_gravity="center_horizontal"
        android:onClick="onBack" />
 
</LinearLayout>
Когда загружаю мало данных (около 10 строк) в список, все отображается корректно, видно заголовок, список и кнопку. Если загрузить больше 10 строк, экран выглядит следующим образом: заголовок, список до конца экрана, список скроллится, но кнопки нет. При скролле, TextView остается на месте, скроллится только ListView.

Что не так в моей разметке? Надо чтобы скроллилось все, а не только ListView.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2015, 01:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Scroll listview (Программирование Android):

Scroll Listview - Программирование Android
Подскажите как убрать скролл в компоненте Listview

Android Listview Scroll - Программирование Android
Здравствуйте, я написал код ведьма может загрузить JSON и шоу ListView (он работает идеально), но моя проблема: когда я пытаюсь прокрутить...

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton? - Программирование Android
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

19
dajver
409 / 273 / 18
Регистрация: 18.09.2010
Сообщений: 1,112
09.01.2015, 02:13 #2
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/tvTitleQuestion"
        android:layout_gravity="center_horizontal" />
 
<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:cacheColorHint="#00000000"
    android:drawSelectorOnTop="false"
    android:weight="5" />
 
<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:weight="1" />
 
</LinearLayout>
Добавлено через 2 минуты
или так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<RelativeLayout android:layout_width="match_parent"
         android:layout_height="match_parent">
 
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/tvTitleQuestion"
        android:layout_gravity="center_horizontal" />
 
      <Button android:id="@+id/btn" 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"/>
 
     <ListView 
            android:id="@android:id/list"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
               android:layout_above="@id/btn" />
</RelativeLayout>
1
BigOblom
119 / 119 / 7
Регистрация: 30.06.2010
Сообщений: 444
09.01.2015, 02:35  [ТС] #3
dajver, ага. Вот как оказывается. Либо вес назначить, либо поменять тип слоя и отметить у ListView привязку к контролу. Спасибо.

Добавлено через 15 минут
dajver, немного не то, что хотелось бы. Получается кнопка располагается всегда в самом низу экрана, а нужно чтобы кнопка была сразу под списком. Если список длинный, то кнопку сначала и не видно, но когда пролистаешь список в конец сразу после него будет кнопка.
0
dajver
409 / 273 / 18
Регистрация: 18.09.2010
Сообщений: 1,112
09.01.2015, 02:47 #4
Если запихнуть listview в srollview то listview не будет скроллиться...

Как то так, но я не проверял, возможно нужно где то подредактировать.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ScrollView
        android:layout_above="@id/buttons"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true"
        android:layout_margin="10dip">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="?backgroundImage"
                android:orientation="vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:text="Large Text"
                    android:id="@+id/tvTitleQuestion" />
             
                <ListView
                    android:id="@android:id/list"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_below="@+id/tvTitleQuestion" />
                 
                <Button
                    android:id="@+id/button1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button"
                    android:layout_below="@+id/list"/>
            </RelativeLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>
1
BigOblom
119 / 119 / 7
Регистрация: 30.06.2010
Сообщений: 444
09.01.2015, 03:14  [ТС] #5
dajver, пробовал так. Только без RelativeLayout. Сейчас попробую ваш вариант.

Добавлено через 11 минут
dajver, на эту строку ругается
XML
1
2
<ScrollView
        android:layout_above="@id/buttons"
Добавлено через 5 минут
dajver, ошибки все поправил, кнопку выводит сразу под TextView, а ListView скроллится.

Добавлено через 4 минуты
В общем по последнему совету поправил все ошибки, все равно выводит без кнопки.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true"
        android:layout_margin="10dip" >
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:text="Large Text"
                    android:id="@+id/tvTitleQuestion" />
 
                <ListView
                    android:id="@+id/lvQuestions"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_below="@+id/tvTitleQuestion" />
 
                <Button
                    android:id="@+id/button1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button"
                    android:layout_below="@+id/lvQuestions"/>
            </RelativeLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,354
Записей в блоге: 2
Завершенные тесты: 1
09.01.2015, 10:44 #6
У ListView высоту попробуй wrap_content сделать.
И fill_parent вроде deprecated, вместо него match_parent используется.
0
BigOblom
119 / 119 / 7
Регистрация: 30.06.2010
Сообщений: 444
09.01.2015, 12:31  [ТС] #7
Kastaneda, сделал так. Результат тот же. TextView наверху и закреплен (т.е. при скролле остается на месте), ListView листается до конца, под ним кнопки нету.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        android:layout_margin="10dip" >
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:text="Large Text"
                    android:id="@+id/tvTitleQuestion"
                    android:nestedScrollingEnabled="true" />
 
                <ListView
                    android:id="@+id/lvQuestions"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/tvTitleQuestion" />
 
                <Button
                    android:id="@+id/button1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Button"
                    android:layout_below="@+id/lvQuestions"/>
            </RelativeLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
09.01.2015, 12:58 #8
BigOblom, засунь через addFooterView и не морочь себе голову
0
BigOblom
119 / 119 / 7
Регистрация: 30.06.2010
Сообщений: 444
09.01.2015, 13:02  [ТС] #9
Armagedo, если можно пример) Он там в качестве параметра View принимает, где мне его передать? в getView?
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
09.01.2015, 13:08 #10
BigOblom, дык их есть в нете.
Грубо - делай отдельный xml, что там тебе нужно, чтобы было в футере - кнопка, много кнопок.
Потом инфлэйтером загоняешь это дело в view.

Цитата Сообщение от BigOblom Посмотреть сообщение
Он там в качестве параметра View принимает, где мне его передать? в getView?
Нет, просто полученный выше view просто цепляешь футером через ListView.addFooterView(view)

Он и будет появляться в конце списка, после того, как тот проскроллится полностью.
1
BigOblom
119 / 119 / 7
Регистрация: 30.06.2010
Сообщений: 444
09.01.2015, 13:11  [ТС] #11
Armagedo, xml есть. Так добавляю
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.polls_layout);
 
        adapter = new PollsAdapter(this);
        ListView lvPollsTheme = (ListView)findViewById(R.id.listView);
        lvPollsTheme.setAdapter(adapter);
    }
 
    class PollsAdapter extends ArrayAdapter<Polls> {
 
        public PollsAdapter (Context context){
            super(context, android.R.layout.simple_list_item_1, polls);
        }
 
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final Polls poll = getItem(position);
 
            if(convertView == null){
                convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, null);
            }
            //TextView tvPoll = (TextView)convertView.findViewById(R.id.tvPoll);
            TextView tvPoll = (TextView)convertView.findViewById(android.R.id.text1);
            //CheckBox tvPoll = (CheckBox)convertView.findViewById(android.R.id.checkbox);
            tvPoll.setText(poll._Name);
 
            convertView.setOnClickListener( new View.OnClickListener() {
 
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getContext(), QuestionsActivity.class);
                    intent.putExtra("pid", poll._Id);
                    startActivity(intent);
                }
            });
 
            return convertView;
        }
    }
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
09.01.2015, 13:18 #12
В onCreate() после
Java
1
2
ListView lvPollsTheme = (ListView)findViewById(R.id.listView);
lvPollsTheme.setAdapter(adapter);
Добавляй

Java
1
2
View footerView = getLayoutInflater().inflate(R.layout.IDТВОЙХМЛДЛЯФУТЕРА,null);
lvPollsTheme.addFooterView(footerView);
1
BigOblom
119 / 119 / 7
Регистрация: 30.06.2010
Сообщений: 444
09.01.2015, 13:29  [ТС] #13
Armagedo, mContentList это что? Если это заполненный список, то у меня ошибку выдает. У меня List<Polls> он.

Добавлено через 39 секунд
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 ArrayAdapter<Polls> adapter;
 
    static final List<Polls> polls = new ArrayList<>();
 
    static {
        polls.add(new Polls(1, "Велосипеды", 0));
        polls.add(new Polls(2, "Здоровье", 0));
        polls.add(new Polls(3, "Животные", 0));
        polls.add(new Polls(4, "Хобби", 0));
        polls.add(new Polls(5, "Цвета", 0));
    }
 
    public static class Polls implements Serializable {
 
        public int _Id;
        public String _Name;
        public int _isShow;
 
        public Polls(int _Id, String _Name, int _isShow) {
            this._Id = _Id;
            this._Name = _Name;
            this._isShow = _isShow;
        }
    }
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
09.01.2015, 13:31 #14
Дык, никто не говорил, что будет легко

Скопипастил я так.
Но...давно поправил в коде
0
BigOblom
119 / 119 / 7
Регистрация: 30.06.2010
Сообщений: 444
09.01.2015, 13:32  [ТС] #15
Armagedo, Что мне делать то?))
0
09.01.2015, 13:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2015, 13:32
Привет! Вот еще темы с ответами:

Копирование данных из 1 listView во 2 listView - Программирование Android
Нужно что бы при нажатии на один элемент в первом ListView он копировался во второй ListView причём многократно.Но я использую...

Самодельный Scroll - Программирование Android
Пытаюсь сделать скролл без использования ScrollView, программно. Это чисто для тренировки сделал себе задачу: public class MainActivity...

Scroll, как в Instagram - Программирование Android
Кто-нибудь подскажет как сделать скролл как в инстаграме? то есть, чтобы заголовок был прикреплен пока просматривается фото,...

Scroll - как заставить скроллиться - Программирование Android
Здравствуйте. Появилась проблема: на активити много разных view. Когда тапишь в элемент с клавиатурой (например, EditText) открывается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru