将ImageView与Android布局的右侧对齐

25

我有一个布局

<?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="fill_parent"
    android:background="#FFFFFF">

    <TextView android:id="@+id/groupname"
         android:paddingLeft="50px"
         android:textSize="16px"
         android:background="#FFFFFF"
         android:textColor="#000000"
         android:textStyle="normal"
         android:layout_width="wrap_content"
         android:layout_height="50px"/>
     <ImageView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="right"
             android:layout_marginRight="6dp"
             android:background="#ffffff" 
             android:src="@drawable/sort"/>

</LinearLayout>

目前的渲染效果 我想要右对齐的渲染效果

目前的渲染效果如第一张图片所示,但我想要像第二张图片那样完全右对齐的渲染效果。任何帮助都会有用。

期待您的回复。 谢谢。


1
提到RelativeLayout作为解决方案的人基本上有正确的解决方案。仅仅告诉我们不起作用并没有帮助你或任何人。 - Maurice
@Maurice 谢谢,但对我来说这个答案在RelativeLayout上没有起作用,这就是我回复的原因。 - Mukunda
9个回答

57
<?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="fill_parent"
    android:background="#FFFFFF">

    <TextView android:id="@+id/groupname"
         android:paddingLeft="50dp"
         android:textSize="16dp"
         android:textColor="#000000"
         android:textStyle="normal"
         android:layout_width="fill_parent"
         android:layout_height="50dp"
         android:layout_weight="0.9"
         android:background="@color/black"/>
     <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="right"
             android:background="#ffffff" 
             android:src="@drawable/checkin"
             android:layout_weight="0.1"/>

</LinearLayout>

试试这个,希望会有帮助。

Prview1 enter image description here


如果ImageView具有固定宽度,则可以在ImageView上不使用layout_weight来完成此操作。只需将TextView上的layout_weight设置为1即可。 - Micah Montoya

32

使用android:layout_weight="1"为文本视图进行布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#FFFFFF">

  <TextView android:id="@+id/groupname"
     android:paddingLeft="50px"
     android:textSize="16px"
     android:layout_weight="1"
     android:background="#FFFFFF"
     android:textColor="#000000"
     android:textStyle="normal"
     android:layout_width="0dp"
     android:layout_height="50px"/>
 <ImageView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="right"
         android:layout_marginRight="6dp"
         android:background="#ffffff" 
         android:src="@drawable/sort"/>

</LinearLayout>

完美的解决方案! - Surekha

14

使用RelativeLayout作为父布局。

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

    <TextView android:id="@+id/groupname"
              android:paddingLeft="50px"
              android:textSize="16px"
              android:textColor="#000000"
              android:textStyle="normal"
              android:layout_width="wrap_content"
              android:layout_height="50px"/>

    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="6dp"
            android:src="@drawable/ncc"/>

</RelativeLayout>

4
尝试使用RelativeLayout。
<?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="fill_parent"
    android:background="#FFFFFF">

    <TextView
        android:id="@+id/groupname"
        android:layout_width="wrap_content"
        android:layout_height="50px"
        android:background="#FFFFFF"
        android:paddingLeft="50px"
        android:textColor="#000000"
        android:textSize="16px"
        android:textStyle="normal" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="#ffffff"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

3
<?xml version="1.0" encoding="utf-8"?>

<TextView android:id="@+id/groupname"
     android:paddingLeft="50px"
     android:textSize="16px"
     android:background="#FFFFFF"
     android:textColor="#000000"
     android:textStyle="normal"
     android:layout_width="wrap_content"
     android:layout_height="50px"/>
 <ImageView
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_gravity="right"
         android:layout_marginRight="6dp"
         android:background="#ffffff"
         android:layout_alignParentRight="true" 
         android:src="@drawable/sort"/>


3
在您的ImageView中,应添加android:scaleType="fitEnd"

0

可以使用RelativeLayout,然后将TextView的属性设置如下:

layout_width=fill_parent
layout_height=wrap_content
left_of="@+id/imgView"

并且转换为 ImageView

layout_width=wrap_content
layout_height=wrap_content
alignparentright=true

0

你应该在 XML 中为想要右对齐的对象添加这样的内容...

android:layout_alignParentRight="true" 
android:layout_marginRight="..dp"

谢谢,但这是不可能的,因为你如何为不同的屏幕设置像素密度。 - Mukunda

0

您可以使用drawableRight属性来使它变得非常简单,就像这个例子:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="50px"
    android:textSize="16sp"
    android:textStyle="normal"
    android:drawableRight="@drawable/ic_favorite_gray"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接