在同一屏幕上制作2个Android ListViews的高度相同

时间:2013-08-01 22:33:35

标签: android android-layout listview android-listview android-linearlayout

我有一个活动,其中屏幕的主要区域是2个列表视图。一个高于另一个。 单击顶部列表视图中的项目会更改下方列表视图中显示的内容。

问题在于我似乎无法强制每个列表始终使用1/2的可用空间。如果顶部列表有100个项目,底部有1个 - 底部列表完全消失,顶部列表占用所有空间。

我在这里已经阅读了几个类似的问题 - 他们似乎都说只是将ListView包装在他们自己的LinearLayouts中并且它有效。不适合我。如果只有少数项目,那么底部列表仍会折叠为小或已消失。

这是我的xml:

  DELETED old XML due to posting size limit.

所以,我尝试了第一个建议 - 哪个不起作用。如果列表中的项目数大致相似,则列表的大小相同。如果一个列表有100个项目,另一个列表有3个,则3个项目列表占用的屏幕空间要少得多。此外,如果两个列表相对较短,它们甚至不会填满屏幕,并在底部留下一个空白区域。请注意,此屏幕中还有其他必需的控件,其中一些控件根据需要显示/消失。

这是更新的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF000000"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <com.teamunify.ondeck.widget.TUButton
                android:id="@+id/prevButton"
                style="@style/prevButton"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                android:layout_weight="0.5"
                android:onClick="onPrevResult" />

            <com.teamunify.ondeck.widget.TUTextView
                android:id="@+id/meet_name"
                style="@style/sans.white.16.bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="2dp"
                android:layout_marginRight="2dp"
                android:layout_weight="1.0"
                android:ellipsize="end"
                android:gravity="center_horizontal"
                android:paddingTop="4dp"
                android:singleLine="true"
                android:text="@string/example_meet_name_long" />

            <com.teamunify.ondeck.widget.TUButton
                android:id="@+id/nextButton"
                style="@style/nextButton"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                android:layout_weight="0.5"
                android:onClick="onNextResult" />
        </LinearLayout>

        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:padding="6dp" >

            <com.teamunify.ondeck.widget.TURadioButton
                android:id="@+id/filter_mine"
                style="@style/sans.white.14"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:background="@drawable/grey_segment_left"
                android:button="@drawable/small_crap"
                android:gravity="center"
                android:onClick="onFilterMine"
                android:text="@string/my_kids" />

            <com.teamunify.ondeck.widget.TURadioButton
                android:id="@+id/filter_team"
                style="@style/sans.white.14"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:background="@drawable/grey_segment_mid"
                android:button="@drawable/small_crap"
                android:gravity="center"
                android:onClick="onFilterTeam"
                android:text="@string/my_team" />

            <com.teamunify.ondeck.widget.TURadioButton
                android:id="@+id/filter_all"
                style="@style/sans.white.14"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:background="@drawable/grey_segment_right"
                android:button="@drawable/small_crap"
                android:checked="true"
                android:gravity="center"
                android:onClick="onFilterAll"
                android:text="@string/all" />
        </RadioGroup>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <com.teamunify.ondeck.widget.TUButton
                android:id="@+id/search_button"
                style="@style/searchButton"
                android:layout_margin="4dp"
                android:gravity="center"
                android:onClick="onSearch" />

            <RadioGroup
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1.0"
                android:gravity="center_horizontal"
                android:orientation="horizontal" >

                <com.teamunify.ondeck.widget.TURadioButton
                    android:id="@+id/filter_events"
                    style="@style/sans.white.14"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="0"
                    android:background="@drawable/grey_segment_left"
                    android:button="@drawable/small_crap"
                    android:gravity="center"
                    android:onClick="onFilterEvents"
                    android:text="@string/events" />

                <com.teamunify.ondeck.widget.TURadioButton
                    android:id="@+id/filter_swimmers"
                    style="@style/sans.white.14"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="0"
                    android:background="@drawable/grey_segment_right"
                    android:button="@drawable/small_crap"
                    android:checked="true"
                    android:gravity="center"
                    android:onClick="onFilterSwimmers"
                    android:text="@string/swimmers" />
            </RadioGroup>

            <com.teamunify.ondeck.widget.TUButton
                android:id="@+id/help_button"
                style="@style/helpButton"
                android:layout_margin="4dp"
                android:gravity="center"
                android:onClick="showHelp" />
        </LinearLayout>
    </LinearLayout> <!-- end of heading -->

    <LinearLayout
        android:id="@+id/tophdr_event"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_weight="0"
        android:background="#FF000000"
        android:orientation="horizontal" >

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_filter_gender"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onFilterGender"
            android:paddingLeft="5dp"
            android:text="@string/gender" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_filter_distance"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onFilterDistance"
            android:paddingLeft="5dp"
            android:text="@string/distance" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_filter_stroke"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onFilterStroke"
            android:paddingLeft="10dp"
            android:text="@string/stroke" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_filter_age"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onFilterAge"
            android:paddingLeft="26dp"
            android:text="@string/age" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tophdr_swimmer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_weight="0"
        android:background="#FF000000"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.teamunify.ondeck.widget.TUTextView
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:gravity="center_vertical"
            android:paddingLeft="16dp"
            android:text="@string/swimmer" />

        <com.teamunify.ondeck.widget.TUTextView
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:gravity="center_vertical"
            android:paddingLeft="16dp"
            android:text="@string/event_age" />

        <com.teamunify.ondeck.widget.TUTextView
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:gravity="center_vertical"
            android:paddingLeft="16dp"
            android:text="@string/team" />
    </LinearLayout>

    <ListView
        android:id="@+id/meet_result_top_list"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="2dp"
        android:layout_weight="0.5"
        android:background="#FF333333" />

    <com.teamunify.ondeck.widget.TUTextView
        android:id="@+id/meet_result_top_empty"
        style="@style/sans.white.18.bold"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.5"
        android:background="#FF333333"
        android:gravity="center"
        android:text="@string/no_matching_data"
        android:visibility="gone" />

    <LinearLayout
        android:id="@+id/bothdr_event"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_weight="0"
        android:background="#FF000000"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_sort_event"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onSortEvent"
            android:paddingLeft="16dp"
            android:text="@string/event" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_sort_evpos"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onSortPos"
            android:paddingLeft="16dp"
            android:text="@string/position" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_sort_evpoints"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onSortPointsE"
            android:paddingLeft="16dp"
            android:text="@string/points" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_sort_evtime"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onSortTimeE"
            android:paddingLeft="16dp"
            android:text="@string/time" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/bothdr_swimmer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dp"
        android:layout_weight="0"
        android:background="#FF000000"
        android:orientation="horizontal" >

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_sort_swimmer"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onSortSwimmer"
            android:paddingLeft="5dp"
            android:text="@string/swimmer" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_sort_team"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onSortTeam"
            android:paddingLeft="14dp"
            android:text="@string/team" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_sort_swpos"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onSortEvent"
            android:paddingLeft="25dp"
            android:text="@string/position" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_sort_swpoints"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onSortPointsS"
            android:paddingLeft="4dp"
            android:text="@string/points" />

        <com.teamunify.ondeck.widget.TUButton
            android:id="@+id/btn_sort_swtime"
            style="@style/sans.white.12"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#FF000000"
            android:drawableRight="@drawable/filter"
            android:gravity="center_vertical"
            android:onClick="onSortTimeS"
            android:paddingLeft="4dp"
            android:text="@string/time" />
    </LinearLayout>

    <ListView
        android:id="@+id/meet_result_bot_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dp"
        android:layout_weight="0.5"
        android:background="#FF333333"
        android:visibility="visible" >
    </ListView>

    <com.teamunify.ondeck.widget.TUTextView
        android:id="@+id/meet_result_bot_empty"
        style="@style/sans.white.18.bold"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="0.5"
        android:background="#FF333333"
        android:gravity="center"
        android:text="@string/meet_manage:no_entries"
        android:visibility="gone" />

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

它应该有这样的形式:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.5" />

    <ListView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.5" />

</LinearLayout>