Android TextView с атрибутом ellipsize, перемещенным из исходной позиции

Я обнаружил странное поведение с 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 устарела».


person aLx    schedule 09.10.2016    source источник
comment
Решение состоит в том, чтобы использовать атрибут singleLine, после чего проблема исчезнет. Но AndroidStudio говорит мне, что «singleLine устарела».   -  person aLx    schedule 10.10.2016


Ответы (1)


У меня была аналогичная проблема со шрифтом "Courier New" - когда текст в 1 строку становился эллипсным, он перемещался на несколько пикселей вниз. Решение моей проблемы состояло в том, чтобы добавить:

android:includeFontPadding="false"

везде, где я использовал этот шрифт.

person Piotr S    schedule 03.03.2017
comment
Я присмотрюсь к этому варианту. Спасибо! - person aLx; 26.03.2017