Поместите два текстовых изображения бок о бок в макет
У меня есть два текстовых комментария, которые мне нужно ставить бок о бок в макете, и я должен соблюдать два правила:
-
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]()