Android布局:如何与最右边的视图对齐,但保持所有元素保持对齐

时间:2013-10-26 16:31:29

标签: android android-layout

[short text][image1][image2]____________________________________

[this is a reallyyyyyyy.............y long text][image1][image2]

我有3个视图:一个可变大小的TextView和两个小图像(16dp x 16dp),并希望实现一个布局,使图像始终显示为16dp x 16dp,文本应显示在剩余空间中,如果也是椭圆形长。 3个视图组应该全部左对齐并且彼此相邻。

尝试了方法:

  1. 没有权重的LinearLayout

    缺点:当TextView很大时,不会显示ImageView。

  2. 带权重的LinearLayout

    缺点:ImageViews不再相邻,而是以权重比例占据空间。

  3. RelativeLayout - image2:alignParentBottom,image1:toLeftOf =“image2”,text:toLeftOf =“image1”

    缺点:现在所有元素都是右对齐的。

    _ __ _ __ _ __ _ __ _ 的__ _ ____ [简短文字] [image1] [image2]

  4. 如何实现这样的布局?最好没有嵌套?

    提前致谢!

2 个答案:

答案 0 :(得分:1)

你应该使用你的第三个方法,但将textview gravity设置为left。

这样的事情:

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

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:gravity="right"
        android:layout_toLeftOf="@+id/imageView1"
        android:text="TextView" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="16dp"
        android:layout_height="16dp"
        android:layout_toLeftOf="@+id/imageView2"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="16dp"
        android:layout_height="16dp"
        android:layout_alignParentRight="true"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

如果您想将textview保持在一行中,请使用android:singleLine="true"

答案 1 :(得分:0)

这个技巧对我有用。试试这个,如果这可以帮到你。

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

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:paddingRight="32dp"
    android:singleLine="true"
    android:text="This is a very large text just to test the alignment of the images with the textview" />

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="16dp"
    android:layout_height="16dp"
    android:layout_alignRight="@+id/textView1"
    android:src="@drawable/ic_launcher" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="16dp"
    android:layout_height="16dp"
    android:layout_toLeftOf="@+id/imageView2"
    android:src="@drawable/ic_launcher" />
</RelativeLayout>