2013-10-26 2 views
1
[short text][image1][image2]____________________________________ 

[this is a reallyyyyyyy.............y long text][image1][image2] 

У меня есть 3 вида: один TextView переменного размера и два небольших изображений (16dp х 16dp) и хотите, чтобы достичь макет такой, что изображения всегда отображаются как 16dp x 16dp, и текст должен отображаться в остаточном пространстве и эллипсироваться, если он слишком длинный. Группа из трех видов должна быть выровнена влево и находиться рядом друг с другом.Android Layout: Как выровнять по крайней правой точки зрения, но сохранить все элементы по левому краю

подходов пытались:

  1. LinearLayout, без весов

    Минуса: Когда TextView велико, ImageViews не показан.

  2. LinearLayout с весами

    Drawback: ImageViews больше не рядом друг с другом, но занимают место в соотношении веса.

  3. RelativeLayout - image2: alignParentBottom, image1: toLeftOf = "image2", текст: toLeftOf = "image1"

    Минус: Все элементы теперь выровнены по правому краю.

    _ __ _ __ _ __ _ __ _ __ _ ____ [короткий текст] [image1] [image2]

Как может такое макет должен быть достигнут? Предпочтительно без гнездования?

Заранее благодарен!

+0

Вы когда-нибудь решают эту проблему? –

+0

Я думаю, что это аналогичный вопрос, если не совсем то же самое: http://stackoverflow.com/questions/32593845/android-layout-how-to-keep-right-most-text-element-and-ellipsize-left -most-text –

+0

Я получил ответ на свой вопрос. Я попробовал предложенный ответ, и он проверяет. –

ответ

1

Вы должны использовать свой третий подход, но установите силу тяжести текста влево.

Что-то вроде этого:

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

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:gravity="right" 
     android:layout_toLeftOf="@+id/imageView1" 
     android:text="TextView" /> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="16dp" 
     android:layout_height="16dp" 
     android:layout_toLeftOf="@+id/imageView2" 
     android:src="@drawable/ic_launcher" /> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="16dp" 
     android:layout_height="16dp" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/ic_launcher" /> 

</RelativeLayout> 

Если вы хотите сохранить TextView в одной только для использования линии android:singleLine="true"

+0

Это означает, что он отображается как [короткий текст] ____________________ [image1] [image2], тогда как ожидается [короткий текст] [image1] [image2]. ___ представляет пробелы здесь. – tarkeshwar

+0

Хорошо, тогда я думаю, что не понял, что вы хотели ...:/ – Mikel

+0

Попробуйте сейчас, просто изменив гравитацию вправо. – Mikel

0

Этот трюк работал для меня. Попробуйте, если это вам поможет.

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

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:paddingRight="32dp" 
    android:singleLine="true" 
    android:text="This is a very large text just to test the alignment of the images with the textview" /> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_width="16dp" 
    android:layout_height="16dp" 
    android:layout_alignRight="@+id/textView1" 
    android:src="@drawable/ic_launcher" /> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="16dp" 
    android:layout_height="16dp" 
    android:layout_toLeftOf="@+id/imageView2" 
    android:src="@drawable/ic_launcher" /> 
</RelativeLayout> 
Смежные вопросы