Как исправить переполнение текста TextView с заполнением android:ellipsize= " marquee"

на некоторых устройствах Android (LG Google Nexus 5 с Android L и M) TextView с android:ellipsize="marquee" и заполнение приводит к переполнению текста textview. Это происходит на правой стороне, но не на левой стороне TextView, хотя, в то время как заполнение применяется как к левой, так и к правой стороне.

screenshot

Это не происходит на Samsung Galaxy S3 и S6 с Android K и L, соответственно.

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="1dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:freezesText="true"
android:alpha="0.85"
android:background="@color/by433_gray_darker"
android:textColor="@color/white"
android:textSize="11sp" />

что могу ли я исправить или обойти это?

1 ответов


ваша проблема-ошибка Android и уже сообщили, и назначить на Android с открытым исходным кодом проекта:

ваш обходной путь может выглядеть следующим образом:

<FrameLayout android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:paddingTop="2dp"
             android:paddingBottom="2dp"
             android:paddingLeft="4dp"
             android:paddingRight="4dp"
             android:layout_marginBottom="1dp"
             android:background="@color/by433_gray_darker">
    <TextView
        android:id="@+id/textId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:freezesText="false"
        android:alpha="0.85"
        android:text="super nice text text text text text text text text text text text text text text text text text"
        android:textColor="@color/white"
        android:textSize="11sp" />
</FrameLayout>

Итак, идея состоит в том, чтобы иметь контейнер-обертку с прокладками, полями и фоном. (Это не должно быть много накладных расходов производительности, если у вас есть только пара таких представлений)


оригинальный неправильный ответ (хотя было два TextViews) Проблема может быть из-за сочетания из стольких атрибутов в вашем TextView. Вот некоторые предложения:

  1. сначала попробуйте удалить атрибут один за другим, проверяя результат
  2. вы можете попытаться указать отступы на контейнере вместо текстовых представлений
  3. из вашего макета кажется, что вы можете попробовать что-то вроде этого вместо "match_parent" на ваших текстовых представлениях:

    <LinearLayout android:orientation="horizontal" ...>
        <TextView android:layout_width="0dp" android:layout_weight="1" ... />
        <TextView android:layout_width="0dp" android:layout_weight="1" ... />
    </LinearLayout>