【问题标题】:android:layout_gravity doesn't work as expectedandroid:layout_gravity 不能按预期工作
【发布时间】:2010-01-22 19:00:32
【问题描述】:

我有一个带有一个 TextView 和一个 ImageView 的简单 LinearLayout。我希望 TextView 中的文本向右对齐,但结果显示文本向左对齐。我的布局 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>

按照迈克尔评论中的解决方法,我有下面的 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>

【问题讨论】:

  • 他做了,只是没有格式化。
  • (也:编辑使其可见,并且可见作为代码 ...)
  • 顺便说一句,为了在此处发布代码或 xml,格式化代码的正确方法是什么?
  • @KKnight,对于内联代码块,最简单的方法是将代码 (example&lt;imageView&gt;) 用反引号括起来。对于代码块,您可以在编写答案/问题时选择代码块并点击“1010”按钮,或者将每行代码缩进四个空格。

标签: java android


【解决方案1】:

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

【讨论】:

  • +1,在我看到这个答案之前,我花了一些时间试图找到这个信息。
  • 链接并不像人们想象的那么永恒。 “此处”现在指的是“禁止内容警告”。
  • 好像群里的所有话题都被删除了,回路机从来没有刮过。时间会吞噬一切。您可能会从原始帖子中获得一些线索(显示解决方法的无效实现)。
【解决方案2】:

我发现我的 xml 有什么问题。我应该使用重力而不是 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>

【讨论】:

  • 那么您应该将此答案标记为“已接受”(单击问题左侧的勾号)。
【解决方案3】:

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

如果您发布一些示例 XML,会更容易为您提供帮助。

编辑:

我看到您现在已经发布了 XML。看起来您确实设置了正确的属性,但是如果您将文本向右对齐,为什么要将它放在线性布局的首位?我建议将其更改为从左到右。

【讨论】:

    【解决方案4】:

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

    <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>
    

    【讨论】:

    • 嗨,Jared,我尝试了您的代码,将 ToogleButton 替换为 TextView。它不起作用:TextView 中的文本未向右对齐。
    猜你喜欢
    • 2015-06-26
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多