2016-10-09 8 views
1

Я нашел странное поведение с Android TextView и атрибутом эллипсиса. Когда текст длинный и применяется атрибут эллипса, исходное положение текста теряется, а текст выглядит немного выше.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> 

Short texts under the blocks color perfectly glued

Simply changing the texts with a long string and the texts aren't perfectly glued

РЕШЕНИЕ:

Решение использовать атрибут 'SingleLine', а затем проблемы исчезают. Но AndroidStudio говорит мне, что «singleLine is notrecated».

+0

Решение заключается в использовании атрибута 'singleLine', а затем проблема исчезает. Но AndroidStudio говорит мне, что «singleLine is notrecated». – aLxnophis

ответ

1

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

android:includeFontPadding="false" 

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

+0

Я посмотрю на этот вариант. Благодаря! – aLxnophis