行文本内两个图标的布局

时间:2011-01-27 23:34:27

标签: android layout

我需要一个(列表)行的布局,其中包含两个ImageView和一个TextView(在中间)。两个图像都应该在屏幕的边缘,TextView应该填充它们之间的空间。我的问题是,文本可以动态设置。现在我正在使用TableLayout和属性android:stretchColumns,但可能是文本比可用大小更长,因此ImageView都会移出屏幕。

有人可以为我提供布局吗?对长文本有抵抗力吗?

应该如下所示: Visualisation of desired layout

2 个答案:

答案 0 :(得分:0)

将LinearLayout与FILL_PARENT一起使用;查看布局权重参数。 您必须使用WRAP_CONTENT设置ImageViews,使用FILL_PARENT设置TextView。然后将一些布局权重值(仅使用“1”)应用于TextView并查看神奇的工作。

编辑:示例:

<LinearLayout 
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/add">
</ImageView>

<TextView android:id="@+id/TextView01" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_weight="1" 
android:text="as long as you wish">
</TextView>

<ImageView android:id="@+id/ImageView02" android:layout_width="wrap_content" 
android:layout_height="wrap_content" android:src="@drawable/add">
</ImageView>

</LinearLayout>

另一个编辑(对不起,应该更好地阅读问题): 如果由于其他行而有多行并且该行因屏幕而变宽,则可以为该行设置TableLayout.setColumnShrinkable()。

答案 1 :(得分:0)

我会尝试使用类似下面的XML。我没有尝试过,但它基于:

布局:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:padding="6dip">

    <ImageView
        android:id="@+id/image1"
        android:src="@drawable/icon1"

        android:layout_width="wrap_content"
        android:layout_height="fill_parent"

        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="6dip"
    />

    <ImageView
        android:id="@+id/image2"
        android:src="@drawable/icon2"

        android:layout_width="wrap_content"
        android:layout_height="fill_parent"

        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="6dip"
    />

    <TextView  
        android:id="@+id/text"
        android:singleLine="true"
        android:ellipsize="marquee"

        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 

        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/image1"
        android:layout_toLeftOf="@id/image2"
    />

</RelativeLayout>