相对布局在listview中搞砸了

时间:2014-11-20 03:25:15

标签: android android-layout listview android-relativelayout

问题描述

我使用PullToRefreshListview显示文件夹列表,列表项布局使用自定义布局。

在列表项布局中,我使用RelativeLayout作为根容器。 运行apk时,ListView的布局在开始时工作正常,但是当点击进入丢失了子文件夹和文件的文件夹时会出现问题。

子文件夹布局搞砸了。奇怪的是,并非所有的子文件夹布局都变得凌乱,只有丢失文件和子子文件夹的子文件夹。 我通过安装了Kitkat OS的1280 * 720 pix,hdpi屏幕安卓设备测试了它。

凌乱的布局截图

enter image description here

xml代码

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="48dp" android:background="@color/white"
    android:padding="10dp" >

    <ImageView
        android:id="@+id/list_item_icon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="8dp"
        android:layout_marginEnd="8dp"
        android:paddingBottom="4dp"
        android:src="@drawable/folder" />

    <ImageView
        android:id="@+id/list_item_action"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="2dp"
        android:layout_marginEnd="2dp"
        android:layout_width="60dp"
        android:src="@drawable/folder"
        android:layout_height="fill_parent" />

    <TextView
        android:id="@+id/list_item_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/list_item_icon"
        android:layout_toEndOf="@id/list_item_icon"
        android:layout_toStartOf="@id/list_item_action"
        android:layout_toLeftOf="@id/list_item_action"
        android:lines="1"
        android:singleLine="true" android:text="list_item_titlelist_item_titlelist_item_titlelist_item_titlelist_item_titlelist_item_title"
        android:textColor="#282828"
        android:textSize="14sp" />

    <TextView
        android:id="@+id/list_item_subtitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/list_item_title"
        android:layout_toRightOf="@id/list_item_icon"
        android:layout_toLeftOf="@id/list_item_action"
        android:layout_toEndOf="@id/list_item_icon"
        android:layout_toStartOf="@id/list_item_action"
        android:textColor="#555555" android:text="list_item_titlem_titlelist_item_title"
        android:textSize="12sp" />

</RelativeLayout>

在图形布局工具中预览

enter image description here

2 个答案:

答案 0 :(得分:1)

试试这个。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="48dp"
    android:background="@color/white"
    android:padding="10dp" >

    <ImageView
        android:id="@+id/list_item_icon"
        android:layout_width="60dp"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/folder" />

    <ImageView
        android:id="@+id/list_item_action"
        android:layout_width="60dp"
        android:layout_height="fill_parent"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/folder" />

    <TextView
        android:id="@+id/list_item_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/list_item_action"
        android:layout_toRightOf="@id/list_item_icon"
        android:gravity="left"
        android:lines="1"
        android:paddingLeft="8dp"
        android:singleLine="true"
        android:text="list_item_titlelist_item_titlelist_item_titlelist_item_titlelist_item_titlelist_item_title"
        android:textColor="#282828"
        android:textSize="14sp" />

    <TextView
        android:id="@+id/list_item_subtitle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/list_item_title"
        android:layout_below="@id/list_item_title"
        android:layout_toLeftOf="@+id/list_item_action"
        android:gravity="left"
        android:paddingLeft="8dp"
        android:text="list_item_titlem_titlelist_item_title"
        android:textColor="#555555"
        android:textSize="12sp" />

</RelativeLayout>

答案 1 :(得分:0)

使用LinearLayout而不是RelativeLayout,可以轻松完成您的要求:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:background="@color/white"
    android:padding="10dp" >

    <ImageView
        android:id="@+id/list_item_icon"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/folder" />


    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical">
        <TextView
            android:id="@+id/list_item_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:lines="1"
            android:singleLine="true" 
            android:text="list_item_titlelist_item_titlelist_item_titlelist_item_titlelist_item_titlelist_item_title"
            android:textColor="#282828"
            android:textSize="14sp" />

        <TextView
            android:id="@+id/list_item_subtitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#555555" 
            android:text="list_item_titlem_titlelist_item_title"
            android:textSize="12sp" />

    </LinearLayout>


    <ImageView
        android:id="@+id/list_item_action"
        android:layout_width="60dp"
        android:src="@drawable/folder"
        android:layout_height="match_parent" />
</LinearLayout>