Я обнаружил странное поведение с Android TextView и атрибутом ellipsize. Если текст длинный и применяется атрибут размера эллипса, исходное положение текста теряется, и текст отображается немного выше.
Да, я могу решить это программно, но я хотел бы знать, может ли это быть ошибкой или я что-то делаю не так.
Очень простой пример для проверки. Измените текст двух текстовых представлений, чтобы увидеть текст в виде эллипса или не так, как я показываю на последних снимках экрана. Если вы сравните скриншоты, вы увидите проблему.
Я проверил это с помощью «dp» и «sp», чтобы увидеть, может ли это быть другое поведение. Но это не так.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<View
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="50dp"
android:background="@android:color/holo_green_dark" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="23.3dp"
android:ellipsize="end"
android:maxLines="1"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="Hello World! (dp textSize)"
android:textColor="@android:color/black"
android:textSize="25dp" />
<View
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="150dp"
android:background="@android:color/holo_blue_dark" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="123.2dp"
android:ellipsize="end"
android:maxLines="1"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="Hello World! (sp textSize)"
android:textColor="@android:color/black"
android:textSize="25sp" />
</RelativeLayout>
Короткие тексты под цветом блоков идеально приклеены
Просто заменить текст длинной строкой, и тексты не будут идеально склеены
РЕШЕНИЕ:
Решение состоит в том, чтобы использовать атрибут singleLine, после чего проблема исчезнет. Но AndroidStudio говорит мне, что «singleLine устарела».