android 2列表视图的线性布局高度wrap_content

时间:2014-07-08 11:06:19

标签: android listview android-linearlayout

我在LinearLayout中有两个列表,我希望它们根据内容共享它们之间的空格,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/page_vierge"
android:orientation="vertical"

android:padding="5dp">



<ListView
    android:id="@+id/list_amis_fb"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:cacheColorHint="#00000000"
    android:divider="#00000000"
    android:dividerHeight="0.5dp"
    android:padding="5dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:layout_gravity="center"
    android:textSize="20sp"
    android:text="Amis "/>

<ListView
    android:id="@+id/list_amis"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:cacheColorHint="#00000000"
    android:divider="#00000000"
    android:dividerHeight="0.5dp"
    android:padding="5dp" />
</LinearLayout>
看看图片 enter image description here

1:如果列表1的内容较小而列表2较长

2:如果列表2的内容很小而列表1更长

3:2列表很长

在我的代码中,当列表1很长时,列表2是不可见的!!

帮助。

4 个答案:

答案 0 :(得分:1)

强大的textyou应使用ExpandableListview隐藏列表视图 组标题始终展开组以获得您想要的效果。 ..见这里

http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/

答案 1 :(得分:0)

有3个条件 - 1:如果列表1很小而列表2较长

2:如果列表2很小而列表1更长

3:2列表很长

使用LinearLayout子元素的layout_weight属性(ListViews)。

答案 2 :(得分:0)

你可以通过添加重量来设置它,在代码下方的looke,我已经添加了。你可以根据你的要求改变重量。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/page_vierge"
android:orientation="vertical"
android:weightsum="10"
android:padding="5dp">



<ListView
android:id="@+id/list_amis_fb"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:weight="4"
android:layout_marginTop="10dp"
android:cacheColorHint="#00000000"
android:divider="#00000000"
android:dividerHeight="0.5dp"
android:padding="5dp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:weight="2"
android:layout_gravity="center"
android:textSize="20sp"
android:text="Amis "/>

<ListView
android:id="@+id/list_amis"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:weight="4"
android:layout_marginTop="10dp"
android:cacheColorHint="#00000000"
android:divider="#00000000"
android:dividerHeight="0.5dp"
android:padding="5dp" />
</LinearLayout>

如果你想要第一个列表长,那么你可以将第一个列表视图的权重设置为“5”,将textview权重设置为“1”,将第二个列表视图权重设置为“4”。根据你的需要改变体重。

答案 3 :(得分:0)

当您拥有填充ListViews的适配器时,您只需比较getCount()函数的结果并相应地设置layout_height属性。

public void onCreate(...)
   ...
   ListView list1 = (ListView)findViewById(R.id.list_amis_fb);
   ListView list2 = (ListView)findViewById(R.id.list_amis);

   ListAdapter list1_adapter = ... //However you get your data
   ListAdapter list2_adapter = ...

   int count_difference = list1_adapter.getCount() - list2_adapter.getCount();
   if (count_difference < 0){
        list1.setLayoutParams(LayoutParams.match_parent, 100);
        list2.setLayoutParams(LayoutParams.match_parent, LayoutParams.fill_parent);
   }
   if (count_difference == 0)
   {
       ...
   }