Android列表项:左侧是TextView,右侧是图像

时间:2010-12-05 02:33:33

标签: android-layout

我正在和android列表视图中创建一个自定义列表项。它很简单,左边是文本视图,右边是图像。图像应该一直对齐,文本视图应该占据左侧的所有空间。问题是,我可以让图像显示,但它向左推。如果我将textview宽度设置为fill_parent,图像将消失。这是我的布局:

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" 
              android:layout_width="fill_parent" android:layout_height="50px" android:layout_gravity="center_vertical">
  <!-- item -->
  <TextView android:id="@+id/txtItem" android:gravity="center_vertical" android:textSize="20px" android:layout_width="fill_parent" 
            android:layout_height="fill_parent"/>

  <!-- disclosure image -->
  <ImageView android:layout_gravity="right|center_vertical" android:src="@drawable/common_icon_arrow_disclosure" 
              android:layout_width="wrap_content" android:layout_height="wrap_content"/>
</LinearLayout>

我也尝试了相对布局,但同样的事情发生了。我做错了什么?


编辑:为了澄清,这正是我想要完成的事情:

alt text

我希望文本字段占据整个左侧区域,图像位于右侧,未缩放,垂直居中。

6 个答案:

答案 0 :(得分:24)

您也可以直接将drawable添加到textview中。

<TextView
    android:id="@+id/txtItem"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:drawableRight="@drawable/common_icon_arrow_disclosure"
    android:gravity="center_vertical"
    android:textSize="20px" />

答案 1 :(得分:9)

您可以像这样使用位图drawable(这也会添加圆角):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="@android:color/white" />
            <stroke
                android:width="2dp"
                android:color="#adadad"
            />
            <corners android:radius="5dp" />
        </shape>
    </item>
    <item android:right="5dp"
        android:top="2dp"
        android:bottom="2dp">
        <bitmap
            android:src="@drawable/image"
            android:gravity="right"
        />
    </item>
</layer-list>

并将此drawable放在TextView的后台属性中:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/right_image"
    android:text="some text"
    />

答案 2 :(得分: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">

  <TextView
  android:id="@+id/team_member_name"
  android:layout_width="wrap_content"
  android:layout_height="fill_parent"
  android:layout_alignParentLeft="true"
  android:gravity="center_vertical"
  android:singleLine="true"/>

  <ImageView
  android:id="@+id/team_member_icon"
  android:layout_alignParentRight="true"
  android:layout_width="wrap_content"
  android:layout_height="fill_parent"
  android:layout_gravity="right"
  android:layout_marginLeft="8dp"
  android:layout_marginRight="8dp"
  android:src="@drawable/circle_green"/>

</RelativeLayout>

答案 3 :(得分:0)

相对布局是你想要的。在您的情况下,fill_parent属性导致文本视图将图像推离屏幕。如果您使用相对布局并设置文本视图以使用layout_toLeftOf它应该工作。

这是一个我认为可行的快速示例(我没有测试过它,它来自内存,但想法就在那里)......

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
                android:layout_width="fill_parent" 
                android:layout_height="50px"
                android:layout_gravity="center_vertical">
  <ImageView android:id="@+id/img"
             android:layout_gravity="right|center_vertical"
             android:src="@drawable/common_icon_arrow_disclosure" 
             android:layout_width="wrap_content" 
             android:layout_height="wrap_content"/>

  <TextView android:id="@+id/txtItem"
            android:gravity="center_vertical"
            android:textSize="20px"
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:layout_toLeftOf="@id/img" />
</RelativeLayout>

答案 4 :(得分:0)

这对我有用:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

    <TextView android:id="@+id/date"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:layout_marginRight="10dp"
    android:textSize="16sp"
    android:textColor="@color/text_color"
    android:layout_alignParentLeft="true"
    android:gravity="center_vertical"/>

    <ImageView android:id="@+id/imageBtn"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:contentDescription="@string/delete"
    android:src="@drawable/delete_minus_png"
    android:layout_alignParentRight="true" />

</RelativeLayout>

线安卓:layout_marginRight =“10dp”就行了。

希望它有所帮助!

答案 5 :(得分:0)

看起来有一些布局错误左右。如果TextView具有fill_parent标志,则即使TextView内容足够小,ImageView也会被推离布局。