Android:在LinearLayout中右对齐ImageView

时间:2015-05-10 07:05:56

标签: android android-layout android-linearlayout android-imageview

imageView未在此linearlayout中右对齐(如果重要的话,此LinearLayout实际上是列表中的一行)。

但是如果我使用TextView(在下面的代码中注释)而不是ImageView,它会成功地对齐。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:background="#FFFFAA"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/txtTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title"
        android:textAppearance="?android:attr/textAppearanceMedium" />

<!--
    <TextView
        android:id="@+id/labelNext"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="right"
        android:text="> "
        android:textSize="20sp" 
        android:textStyle="bold">
    </TextView>
-->

     <ImageView
        android:id="@+id/iconNext"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_gravity="right"
        android:layout_weight="1"
        android:gravity="right"
        android:src="@drawable/right_arrow" >
    </ImageView>     
</LinearLayout>

如何将imageView放到LinearLayout行的最右边?

3 个答案:

答案 0 :(得分:4)

使用RelativeLayout代替LinearLayout,因为LinearLayout不支持它。 使用方式如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:background="#FFFFAA" >

    <TextView
        android:id="@+id/txtTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title"
        android:textAppearance="?android:attr/textAppearanceMedium" />

     <ImageView
        android:id="@+id/iconNext"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_gravity="right"
        android:layout_weight="1"
        android:layout_alignParentRight="true"
        android:src="@drawable/right_arrow" >
    </ImageView>     
</RelativeLayout>

答案 1 :(得分:3)

或者您可以在imageView和textView之间添加空视图,以填充它们之间的空白区域,并将第二个textview“推”到右侧:

 <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1"/>

将宽度设置为0并将权重设置为1会导致此视图填充整个可用空间,而其他视图不会使用该空间。所以它的大小将是

  

width =(screenWidth-(imageView width + textView width))

答案 2 :(得分:1)

如果您只需要右侧有TextView图片,请考虑使用android:drawableRight参数。权重为LinearLayout的{​​{1}}和RelativeLayout运行两次测量,因此只留下TextView计算速度更快。

<TextView
    android:id="@+id/txtTitle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Title"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:drawableRight="@drawable/right_arrow" />

(另请注意ListView中的箭头反对Android design guidelines