Android 如何正确对齐两个视图的右边缘?

Android 如何正确对齐两个视图的右边缘?,android,android-layout,Android,Android Layout,这是我问题的简化版本。我需要对齐两个文本视图的右边缘,使其显示如下: a abcdefgh 以下是我的布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView

这是我问题的简化版本。我需要对齐两个文本视图的右边缘,使其显示如下:

        a
 abcdefgh
以下是我的布局:

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

   <TextView
      android:id="@+id/tvFirst"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="a"
    /> 

   <TextView
      android:id="@+id/tvSecond"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/tvFirst"
    android:layout_alignRight="@id/tvFirst"
    android:text="abcdefgh"
    /> 

</RelativeLayout>

虽然“a”和“h”确实对齐,但问题是布局的宽度是tvFirst的宽度,而不是较长的文本的宽度。因此,我看不到TVS的完整文本


如果你能告诉我我错过了什么,我将不胜感激。提前感谢您的帮助。

将它们都包装在
LinearLayout
中,并提供textviews
android:textAlignment=“viewEnd”
属性:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView 
        android:id="@+id/tvFirst"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="viewEnd" />

    <TextView 
        android:id="@+id/tvSecond"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="viewEnd" />              

</LinearLayout>

你没有给它们添加重力!将这些属性添加到两个文本视图中,您将获得:

   android:layout_width="match_parent"
   android:gravity="right" 
试试这个。。

你必须先定义最宽的一个来锚定东西,即使它在第一个下面,所以这可以做到:

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

    <TextView
        android:id="@+id/tvSecond"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvFirst"
        android:text="abcdefgh" />

    <TextView
        android:id="@+id/tvFirst"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@id/tvSecond"
        android:text="a" />

</RelativeLayout>

GridLayout与重力一起完成了以下任务:

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

    <TextView
        android:id="@+id/tvFirst"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="a"
        android:layout_row="0"
        android:layout_column="0"
        android:layout_gravity="right"
        />

    <TextView
        android:id="@+id/tvSecond"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="abcdefgh"
        android:layout_row="1"
        android:layout_column="0"
        />
</GridLayout>

问候,

彼得

不过,这不是他想要的。他似乎不想将所有文本都对齐到父对象的右侧。看起来他只想要两个文本视图,越长的对齐父视图的左侧,越短的对齐父视图的右侧。毗湿奴。谢谢你的帮助。然而,match_父母不适合我。它必须是包装内容。因为您使用了相对布局,所以tvFist将在tvSecond开始时平行,或在tvFist结束时平行,以保持彼此之间的关系。这很接近,但我无法正确进行布局。最顶端的RelativeLayout宽度设置为“wrap_content”。这与布局不符。它把整个东西都弄脏了,让它看起来像match_parent。好吧,我在另一个应用程序中以其他方式做了类似的事情。检查我的新答案。
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  >

    <TextView
        android:id="@+id/tvFirst"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="a"
        android:layout_row="0"
        android:layout_column="0"
        android:layout_gravity="right"
        />

    <TextView
        android:id="@+id/tvSecond"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="abcdefgh"
        android:layout_row="1"
        android:layout_column="0"
        />
</GridLayout>