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

时间:2013-11-22 19:12:06

标签: 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
      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的宽度而不是较长的文本。因此,我没有看到tvSecond的完整文本。

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

5 个答案:

答案 0 :(得分:1)

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>

的问候,
彼得

答案 1 :(得分:0)

将它们全部包裹在LinearLayout中,并提供文字视图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>

答案 2 :(得分:0)

您没有向他们添加gravity!将这些属性添加到TextViews中,您将获得它:

   android:layout_width="match_parent"
   android:gravity="right" 

答案 3 :(得分:0)

Try this..




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

    >

   <TextView
       android:id="@+id/tvFirst"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="true"
       android:layout_marginLeft="28dp"
       android:text="a" />

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

</RelativeLayout>

答案 4 :(得分:0)

你必须首先定义最宽的一个来锚定东西,即使它低于第一个,所以这样做:

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