Intereting Posts
Jsoup не может прочитать файл возврата xml Настройка textSize в пользовательском представлении приводит к огромному тексту Как обновить некоторые данные в Listview без использования notifyDataSetChanged ()? Справа налево поддержка макета вызывает предупреждение lints в редакторе xml Реализация методов жизненного цикла Android может вызвать реализацию суперкласса после выполнения какой-либо работы? Android VideoView, бесшовное воспроизведение при изменении ориентации Кнопки масштабирования в веб-браузере android Отладка базы данных sqlite на устройстве Как использовать Android-приложение как «Producing client» для Kafka? Документация SDK для Dropbox android Ошибка установки с сообщением Недействительный файл Почему символ новой строки в textview вызывает отступ новой строки? Как настроить отображение текста в андроиде, чтобы вырезать любые буквы, которые не соответствуют макету Как получить возвращаемое значение из javascript в webview android? Overdraw and Romain Guy в блоге

Как сделать фрагмент прокручиваемым с помощью ListView

Я хочу, чтобы Fragment имел 2 ListView. Я не хочу, чтобы listView прокручивался, а просто хочу, чтобы весь фрагмент прокручивался. Вот код:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#fff" > <TextView android:id="@+id/day" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:gravity="center_horizontal" android:paddingTop="15dp" android:text="Monday" android:textColor="#000" android:textSize="55sp" /> <TextView android:id="@+id/date" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/day" android:gravity="center_horizontal" android:text="27 April, 2014" android:textColor="#000" android:textSize="45sp" /> <ListView android:id="@+id/home_list_time" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/date" android:layout_margin="10dp" android:background="@color/list_home_time_bg" android:divider="@android:color/white" android:dividerHeight="20.0sp" /> <ListView android:id="@+id/home_list_stime" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/home_list_time" android:layout_margin="10dp" android:background="@color/list_home_stime_bg" android:divider="@android:color/white" android:dividerHeight="20.0sp" /> </RelativeLayout> 

Когда я запускаю этот код, второй listView получает свою собственную полосу прокрутки, есть ли способ остановить это и сделать прокрутку всего фрагмента?

Чтобы остановить прокрутку списка, используйте –

 listView.setScrollContainer(false); 

Чтобы прокрутить фрагмент, поместите его внутри ScrollView –

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- everything you already have --> </ScrollView> 

Для получения дополнительной проверки – как получить-не-прокручиваемый-listview .

ЗАМЕТКА:

Если вы поместите ListView внутри ScrollView, то все ListView не растянутся до полной высоты. Ниже приведен метод устранения этой проблемы.

 /**** Method for Setting the Height of the ListView dynamically. **** Hack to fix the issue of not showing all the items of the ListView **** when placed inside a ScrollView ****/ public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) return; int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.UNSPECIFIED); int totalHeight = 0; View view = null; for (int i = 0; i < listAdapter.getCount(); i++) { view = listAdapter.getView(i, view, listView); if (i == 0) view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, LayoutParams.WRAP_CONTENT)); view.measure(desiredWidth, MeasureSpec.UNSPECIFIED); totalHeight += view.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); listView.requestLayout(); } 

Чтобы использовать этот метод, просто передайте ListView внутри этого метода:

 ListView list1 = (ListView) view.findViewById(R.id.home_list_time); setListViewHeightBasedOnChildren(list1); ListView list2 = (ListView) view.findViewById(R.id.home_list_stime); setListViewHeightBasedOnChildren(list2); 

Подробнее здесь – просмотр в виде андроида-списка-просмотра-внутри-прокрутки .