2015-11-18 8 views
7

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

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" /> 

Что мне делать, чтобы исправить или обойти это?

ответ

2

Ваш вопрос является ошибка в Android и already reported and assigned на Android Open Project Source:

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

<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> 
    
+0

спасибо Грегори, но у меня нет времени, чтобы проверить, правильно п но если никто другой не ответит менее чем за 5 дней, я дам вам щедрость ... иначе щедрость исчезнет: P .. ', но пока что «остается главный вопрос ... почему он не делает», t произошли на Samsung Galaxy S3 и S6 с Android K и L. –

+0

@WojtekDmyszewicz хотел предоставить некоторые идеи о том, как начать исправление/работу над этим. Посмотрите на это немного больше, если вы можете предоставить код проблемный код (я имею в виду контейнеры + текстовые представления) – GregoryK

+0

зачем давать баунти, если на вопрос не ответили? Текстовое изображение находится внутри линейного перехода (с текстом заголовка), которое выровнено по отношению к родительскому (относительное). Ядро вопроса: почему это переполнение происходит с одной стороны, на некоторых устройствах. Пожалуйста, докажите, что решение 3 будет работать. –

Смежные вопросы