添加列表项后,单个布局中的两个ListView会改变其权重

时间:2016-08-22 12:44:26

标签: android listview android-viewgroup

我在布局中添加了两个ListView。我希望他们在整个活动中保持'layout_weight'。但是当我向第二个ListView添加项目时,第一个缩小了忽略layout_weight。 我该如何解决这个问题?

这就是我的期望:

这是代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/content_add_group_members_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

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

        <TextView
            android:id="@+id/content_add_group_text_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="First List" />

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#DDD" />

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ListView
                android:id="@+id/list_added_people"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <TextView
                android:id="@+id/added_people_empty_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="List One Empty View"/>

        </FrameLayout>

    </LinearLayout>

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

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Second List" />

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#DDD" />

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ListView
                android:id="@+id/list_contacts"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:clipToPadding="false" />

            <TextView
                android:id="@+id/contacts_empty_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="List Two Empty View"/>

            <com.github.silvestrpredko.dotprogressbar.DotProgressBar
                android:id="@+id/dots"
                android:layout_width="wrap_content"
                android:layout_height="16dp"
                android:layout_gravity="center"
                android:visibility="gone" />

        </FrameLayout>

    </LinearLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

尝试以下代码在父布局中添加android:weightSum="2",并将android:layout_weight="1"设置为其两个子节点以获得相等的空格。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/content_add_group_members_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:weightSum="2">

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

        <TextView
            android:id="@+id/content_add_group_text_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="First List" />

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#DDD" />

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ListView
                android:id="@+id/list_added_people"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <TextView
                android:id="@+id/added_people_empty_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="List One Empty View" />

        </FrameLayout>

    </LinearLayout>

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

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Second List" />

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#DDD" />

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ListView
                android:id="@+id/list_contacts"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:clipToPadding="false" />

            <TextView
                android:id="@+id/contacts_empty_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="List Two Empty View" />

            <com.github.silvestrpredko.dotprogressbar.DotProgressBar
                android:id="@+id/dots"
                android:layout_width="wrap_content"
                android:layout_height="16dp"
                android:layout_gravity="center"
                android:visibility="gone" />

        </FrameLayout>

    </LinearLayout>

</LinearLayout>