2个可扩展列表视图水平对齐宽度:match_parent

时间:2014-02-12 16:01:54

标签: android android-linearlayout expandablelistview

我想在linear layout with horizontal orientation的同一行创建2个可展开的ListView,具有以下效果(取决于展开的列表)

预期行为:

**********************************************
* v list1                          | v list2 *
**********************************************
* Item1 List1 or List2                       *
* Item2 List1 or List2                       *
* Item3 List1 or List2                       *
* Item4 List1 or List2                       *
* Item5 List1 or List2                       *
* Item6 List1 or List2                       *
**********************************************

点击提示时,这些项可以是list1list2的项目。因此需要在宽度上设置match parent

这就是我现在所拥有的(当点击list1时,我扩展的第一部分只有父宽度的3/4,当点击list2时我只有第二部分:

当前行为:点击list1

*************************************************
* v list1                      | v list2        *
*************************************************
* Item1 List1                  *                *
* Item2 List1                  *                *
* Item3 List1                  *                *
* Item4 List1                  *                *
* Item5 List1                  *                *
* Item6 List1                  *                *
*************************************************

当前行为:点击list2

*************************************************
* v list1                      | v list2        *
*************************************************
*                              * Item1 List2    *
*                              * Item2 List2    *
*                              * Item3 List2    *
*                              * Item4 List2    *
*                              * Item5 List2    *
*                              * Item6 List2    *
*************************************************

所以列表项没有父宽度。

我做过这样的事情:

<LinearLayout
        android:id="@+id/adm_ll_media"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:orientation="horizontal" >

        <ExpandableListView 
            android:id="@+id/adm_list_media"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_gravity="left" />

        <ExpandableListView 
            android:id="@+id/adm_add_media"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:layout_gravity="right" />
    </LinearLayout>

但从逻辑上讲,其中一个占线性布局宽度的3/4,另一个占1/4。所以我想做的只是让提示占用父宽度的1/4和3/4。

你对此有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用android:layout_weight属性时,您应将android:layout_width属性设置为0dp

<LinearLayout
    android:id="@+id/adm_ll_media"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="false"
    android:orientation="horizontal"
    android:weightSum="4"
>

    <ExpandableListView 
        android:id="@+id/adm_list_media"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="left" />

    <ExpandableListView 
        android:id="@+id/adm_add_media"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:layout_gravity="right" />
</LinearLayout>

答案 1 :(得分:0)

如果提示你的意思是标签(v list1),而扩展元素意味着你的列表,那么我相信你应该尝试在你的两个列表上添加一个单独的TextView,它将像你的提示一样工作。为它们分配权重(对于1/4和3/4比率),然后为您的列表分配包装内容的宽度。

<LinearLayout
    android:id="@+id/adm_ll_media"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="false"
    android:orientation="horizontal" >

    <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="vertical">
       <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="v list1">

        <TextView
        android:layout_width="0dp"
        android:layout_weight="3"
        android:layout_height="wrap_content"
        android:text="v list2">
    </LinearLayout>          


     Your ListViews here with a layout_width of match_parent, within an another LinearLayout with layout_width = match_parent
</LinearLayout>