android:layout_gravity无法按预期工作

时间:2010-01-22 19:00:33

标签: java android

我有一个简单的LinearLayout,一个TextView和一个ImageView。我希望TextView中的文本与右侧对齐,但结果显示Text已对齐到左侧。我的布局xml有什么问题吗?感谢。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:background="#E8E3E4">
    <LinearLayout android:orientation="horizontal"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        >
        <TextView android:layout_width="260dp" android:layout_height="wrap_content"
            android:text="More Comments" android:textStyle="bold" android:background="#ff0000"
            android:textColor="#121222" android:layout_gravity="right" />
        <ImageView android:layout_width="50dp"
            android:layout_height="wrap_content" android:src="@drawable/arrow_right"
            android:layout_gravity="center" android:scaleType="centerInside" />
    </LinearLayout>
</LinearLayout>

谢谢,迈克尔。但是你提到的解决方法也不起作用。

我尝试使用RelativeLayout,但它仍然给我结果如下: 更多评论(图标)

我的期望是什么             更多评论(图标)

RelativeLayout xml如下。它有什么问题吗?

<?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">
    <TextView android:id="@+id/label" android:layout_width="260dp"
        android:layout_height="wrap_content" android:text="More Comments"
        android:textStyle="bold" android:background="#ff0000"
        android:textColor="#121222" android:layout_gravity="right" />
    <ImageView android:layout_width="50dp" android:layout_height="wrap_content"
        android:src="@drawable/arrow_right" android:layout_gravity="center"
        android:scaleType="centerInside" android:layout_toRightOf="@id/label" />
</RelativeLayout>

根据Michael的评论解决方法,我在下面有XML。我期望输出为:

     RightLeft

但实际输出是:

Right             Left

因此,解决方法对我不起作用。有什么想法吗?

   <LinearLayout android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
           <TextView
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:layout_gravity="right"
                   android:layout_weight="1.0"                       
                   android:text="RIGHT"/>
           <TextView
                   android:layout_width="wrap_content"

                   android:layout_height="wrap_content"
                   android:layout_gravity="left"
                   android:text="LEFT"/>
   </LinearLayout>

4 个答案:

答案 0 :(得分:33)

水平方向的LinearLayouts不支持右/左重力。您可以找到解决方法here

答案 1 :(得分:8)

我弄明白我的xml有什么问题。我应该使用gravity而不是layout_gravity来右对齐TextView中的文本。以下XML按预期工作。

<?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">
    <TextView android:id="@+id/label" android:layout_width="260dp"
        android:layout_height="wrap_content" android:text="More Comments"
        android:textStyle="bold" android:background="#ff0000"
        android:textColor="#121222" android:gravity="right" />
    <ImageView android:layout_width="50dp" android:layout_height="wrap_content"
        android:src="@drawable/arrow_right" android:layout_gravity="center"
        android:scaleType="centerInside" android:layout_toRightOf="@id/label" />
</RelativeLayout>

答案 2 :(得分:1)

我只使用android完成了几个项目,但android:layout_gravity指定了父视图中视图的对齐方式,android:gravity指定视图中包含的视图的对齐方式,其中包含您指定的重力。确保您指定了正确的一个。文档没有区分这两者。

如果您发布了一些示例XML,那么帮助您会更容易。

编辑:

我发现你现在已经发布了XML。它看起来像你有正确的属性集,但如果你正在将文本对齐,为什么你会把它放在线性布局中?我建议将其改为从左到右。

答案 3 :(得分:0)

这是我为我的项目编写的一些代码。它完成了你正在寻找的东西。我只是更改控件类型等等,你应该关闭并运行。

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="50dip"
    android:background="#ffdddddd">
    <TextView android:layout_width="260dp" 
        android:layout_height="wrap_content"
        android:text="More Comments" 
        android:textStyle="bold" 
        android:background="#ff0000"
        android:textColor="#121222" 
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true" />
    <ImageView android:layout_width="50dp"
        android:layout_height="wrap_content" 
        android:src="@drawable/arrow_right"
        android:scaleType="centerInside"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />
</RelativeLayout>