Поместите два текстовых изображения бок о бок в макет

У меня есть два текстовых комментария, которые мне нужно ставить бок о бок в макете, и я должен соблюдать два правила:

  • Textview2 всегда должен отображаться полностью.

  • Textview1 необходимо обрезать, если в макете недостаточно места.

Примеры:

Textview1 | textview2

Teeeeeeeeeeeeeeeeeeeextview1... | textview2

Любые идеи?

Единственный способ, с помощью которого я могу работать, это создать drawable с текстом textview2 и повлиять на него как coumpoundDrawable на textview1.

Ответы

Ответ 1

Оберните два текстовых элемента в LinearLayout. Назначьте вес макета от 0 до textview2 и вес макета от 1 до textview2.

См. здесь для получения дополнительной информации: Линейный вес макета

Если вы играете с приведенным ниже примером, вы увидите, что LinearLayout сначала выделяет пространство textview2 (с весом 0), а затем выделяет все, что остается в textview1 (с весом 1). Если для размещения обоих текстовых объектов недостаточно места, textview1 будет сначала эллипсовым. В приведенном ниже примере textview2 будет только когда-либо становиться эллипсисом, если LinearLayout меньше размера самого textview2. Назначьте конкретную ширину макета для FrameLayout и посмотрите, что произойдет.

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="200dp"
    android:layout_height="match_parent" 
    android:background="#FF0000FF">

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#FFFF0000"
            android:ellipsize="end"
            android:maxLines="1"
            android:text="textview1" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:background="#FF00FF00"
            android:ellipsize="end"
            android:maxLines="1"
            android:text="textview2" />
    </LinearLayout>

</FrameLayout>

Ответ 2

зачем вам это нужно? Редактирует мой ответ, если он является обязательным, иначе вы можете использовать textview1 с фиксированной шириной и эллипсисом конца..:

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

    <TextView
        android:id="@+id/textview1"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:lines="1"
        android:padding="2dp" />


    <TextView
        android:id="@+id/textview2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/textview1"
        android:padding="2dp" />

</RelativeLayout>  

Ответ 3

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="right"
    android:orientation="horizontal" >

    <View
        android:layout_width="0dp"
        android:layout_height="wrap_content" 
        android:layout_weight="1"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_green_light"
        android:singleLine="true"
        android:text="textView1" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_blue_light"
        android:singleLine="true"
        android:text="textView2" />

</LinearLayout>

Изменить:

Вывод для короткого текста textView1:

enter image description here

Вывод для длинного текста textView1:

enter image description here