Выровнять перекрывающийся текст в TextViews

#android #textview

#Android #textview

Вопрос:

Я хочу, чтобы два TextViews перекрывались таким образом, чтобы отдельные буквы перекрывались идеально (т. Е. вы даже не можете видеть, что на экране есть другой TextView). Вот соответствующая часть моего макета:

 <com.testing.android.animals.OutlinedTextView
android:id="@ id/label_left_name"
android:layout_height="wrap_content" 
android:layout_width="wrap_content"
android:text="Elephant"
android:layout_alignTop="@id/picture_left"
android:layout_centerHorizontal="true" 
android:textColor="#ffffff" 
android:textSize="40dp"
android:background="#99000000"
></com.testing.android.animals.OutlinedTextView>

<com.testing.android.animals.OutlinedTextView
android:id="@ id/label_left_letter"
android:layout_height="wrap_content" 
android:layout_width="wrap_content"
android:text="E"
android:layout_alignBaseline="@id/label_left_name"
android:layout_alignLeft="@id/label_left_name"
android:textColor="#ffffff" 
android:textSize="40dp"
android:background="#99ffffff"
></com.testing.android.animals.OutlinedTextView>
  

При визуализации это выглядит следующим образом:

введите описание изображения здесь

Обратите внимание, что отдельная буква «E» (светло-серая) выровнена слишком высоко.

Что я могу изменить в макете, чтобы они лучше перекрывались?

Ответ №1:

Проблема в том, что p делает нижнюю часть полного текста wordview выше. и поскольку у вас есть wrap_content в качестве высоты, две высоты textviews различны.

Если вы установите высоту каждого textview определенного размера (одинакового размера), они должны выровняться.

Но в целом, я думаю, что ваш подход может быть неправильным — возможно, вы захотите либо просмотреть форматируемые строки для форматирования, либо, поскольку, похоже, вы все равно используете пользовательский элемент управления, попросите его выполнить форматирование первой буквы. (вот пример расширяемых строк:http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring )

Комментарии:

1. В итоге я использовал разделяемую строку, которая содержала целое слово «Elephant», но часть «lephant» была прозрачной.