具有权重的LinearLayout在列表视图中不起作用

时间:2014-12-04 14:36:36

标签: android android-layout android-listview android-layout-weight

我正在尝试为ListView行构建自定义视图。下面是我的行

Img  |  Text 1           
     |------------
Text |  Text 2           

以下是我用于生成行视图的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<RelativeLayout
    android:id="@+id/icon_status"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_margin="10dp"
    android:padding="10dp" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="10dp"
        android:contentDescription="@string/app_name"/>

    <TextView
        android:id="@+id/status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/icon"
        android:layout_centerHorizontal="true"
        android:text="STATUS" />
</RelativeLayout>

<View
    android:id="@+id/ver_divider"
    android:layout_width="2dp"
    android:layout_height="fill_parent"
    android:layout_alignBottom="@id/icon_status"
    android:layout_alignTop="@id/icon_status"
    android:layout_toRightOf="@id/icon_status"
    android:background="@android:color/black" />

<View
    android:id="@+id/hor_divider"
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:layout_centerVertical="true"
    android:layout_marginRight="10dp"
    android:layout_toRightOf="@id/ver_divider"
    android:background="@android:color/black" />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignBottom="@id/icon_status"
    android:layout_alignTop="@id/icon_status"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_toRightOf="@id/ver_divider"
    android:background="#99FF0000"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Test ME" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Test ME" />
</LinearLayout></RelativeLayout>

列表视图非常简单,没有自定义。

文本1和文本2与水平分隔符的距离相等。当我尝试使用layout_below在分隔符下面设置Text2时,它不起作用。在上面的布局中,我尝试创建一个带有全高视图的linearlayot,然后使用权重设置两个相同高度的文本视图,这也不起作用。

虽然相同的代码在Android 5.0上运行正常但在android 4.4.4或更低版本上失败。

任何帮助都非常感谢..不知道我该怎么做才能使它在android 4.x.x上运行

1 个答案:

答案 0 :(得分:0)

layout_below上设置Text 2无效,因为父级是LinearLayout。我会把hor_divider放在LinearLayout里面,就像这样:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignBottom="@id/icon_status"
    android:layout_alignTop="@id/icon_status"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_toRightOf="@id/ver_divider"
    android:background="#99FF0000"
    android:orientation="vertical" 
    android:gravity="center_vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Test ME" />

    <View
        android:id="@+id/hor_divider"
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@android:color/black" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Test ME" />
</LinearLayout>

然后,您可以为paddingText 1添加一些Text 2以创建更多空间。