2013-11-22 3 views
0

Вот упрощенная версия моей проблемы. Мне нужно, чтобы выровнять правые края двух точек зрения текста таким образом, что они выглядят следующим образом:Как правильно выровнять правые края двух видов?

 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> 

Хотя «а» и «ч» действительно получить выровнены, проблема заключается в том, что ширина макета равна ширине tvFirst, а не длинному тексту. В результате я не вижу полного текста для tvSecond.

Буду признателен, если вы скажете мне, что это такое, что мне не хватает. Спасибо заранее за вашу помощь.

ответ

0

Оберните их обоих в 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> 
+0

Это близко, за исключением того, что я не могу выполнить layout_alignParentRight. Самая верхняя ширина RelativeLayout установлена ​​на «wrap_content». Это не так хорошо с layout_alignParentRight. Это усиливает все, чтобы он выглядел как match_parent. – Peter

+0

ОК, я сделал что-то подобное в другом приложении другим способом. Проверьте мой новый ответ. – Szymon

0

Вы не добавили gravity к ним! Добавьте эти атрибуты в обоих TextViews, и вы получите его:

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

Это не то, что он хочет. Кажется, он не хотел выровнять весь текст справа от родителя. Похоже, он просто хочет иметь два текстовых вида, чем длиннее выровнять слева от родителя, а более короткое совпадение с правом более длинного. – trungdinhtrong

+1

Vishnu. Спасибо за вашу помощь. Однако match_parent не работает для меня. Это должно быть wrap_content. – Peter

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

Поскольку вы использовали относительную компоновку, tvFist будет параллельной в начале tvSecond или в конце, поддерживая отношение друг к другу. –

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

с уважением,
Peter

Смежные вопросы