Android: ListView не может получить полную layout_height в ScrollView

#android #listview #scrollbar #scrollview #fill-parent

#Android #listview #полоса прокрутки #scrollview #заполнение-родительский

Вопрос:

У меня есть два вопроса:

— Как получить динамическую высоту (fill_parent, match_parent) для моего ListView? Если я напишу «layout_height: fill_parent», это на самом деле не работает

— Как я могу получить решение без ScrollView, только с ListView? (Без ScrollView моя полоса прокрутки находится слишком далеко от нужного сайта.)

Приветствует Робина

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="#e7e7e7">

<TextView
    android:id="@ id/date_header"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="#bfbfbf"
    android:gravity="center"
    android:text="05.07.2014"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<ScrollView
    android:id="@ id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_below="@ id/date_header"
    android:layout_centerHorizontal="true" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <ListView
            android:id="@ id/listView1"
            android:layout_width="match_parent"
            android:layout_height="431dp"
            android:divider="@android:color/transparent"
            android:dividerHeight="15dp"
            android:paddingBottom="20dp"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:paddingTop="20dp"
            android:scrollbars="none" >

        </ListView>

    </LinearLayout>
</ScrollView>
  

Комментарии:

1. Почему вы помещаете ListView в ScrollView? это определенно плохая практика . ListView прокручивается сам по себе…

2. Вы также можете избежать использования LinearLayout и установить высоту ListView равной match_parent.

3. Нет необходимости ScrollView

4.чтобы устранить проблему с заполнением полосы прокрутки, используйте: android:clipToPadding="false" и android:scrollbarStyle="outsideOverlay" plus.google.com/ AndroidDevelopers/posts/LpAA7q4jw9M

Ответ №1:

Я думаю, что нет необходимости ScrollView :

При разработке вы можете получать предупреждения, подобные:

Вертикально прокручиваемый ScrollView не должен содержать другого виджета с вертикальной прокруткой (ListView)

Вы также можете создать свой дизайн с помощью этого:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:background="#e7e7e7" >

    <TextView
        android:id="@ id/date_header"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="#bfbfbf"
        android:gravity="center"
        android:text="05.07.2014"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <ListView
        android:id="@ id/listView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_below="@ id/date_header"
        android:layout_marginTop="10dp"
        android:divider="@android:color/transparent"
        android:dividerHeight="15dp"
        android:scrollbars="none" >
    </ListView>

</RelativeLayout>
  

Комментарии:

1. вид заголовка, вероятно, должен быть в новом XML-файле, и используйте addHeaderView для его настройки.

2. @LordRaydenMK Нет, вам не нужно использовать addHeaderView (nor addFooterView ). Если у вас есть дизайн, который already includes содержит верхний (и / или нижний колонтитул).