Android TextView Gravity BOTTOM неожиданное поведение

В моем текущем проекте Android есть требование отображать несколько строк текста (максимум 3) внутри TextView и размещать текст внизу текстового представления.

Мой TextView определяется следующим образом: -

<TextView
    android:id = "@+id/my_title"
    android:layout_width = "@dimen/image_width"
    android:layout_height = "@dimen/image_height"
    android:layout_alignTop = "@+id/other_title"
    android:layout_marginTop = "@dimen/span_eight"
    android:layout_toEndOf = "@+id/dot"
    android:maxLines = "3"
    android:gravity = "bottom"
    android:padding = "2dp"
    android:textColor = "@android:color/white"
    android:textSize = "@dimen/text_twelve" />

Когда отображаемый текст состоит из 3 или менее строк, текст отображается так, как вы ожидаете.

Однако, когда его длина превышает 3 строки, начало текста обрезается.

Например

"Artificial cells, nanomedicine, and biotechnology"

отображается как

"`cine, and biotechnology`"

мне нужно, чтобы он отображался как

"`Artificial cells, nanom`"

Как мне добиться желаемого результата?

Какой макет вы используете?

Dheeraj Rijhwani 03.05.2019 10:08

@DheerajRijhwani Я использую RelativeLayout

Hector 03.05.2019 10:14
2
2
175
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Пытаться;

android:gravity = "bottom|start"

Вместо

android:gravity = "bottom"

android:gravity = "bottom|start" не влияет на отображаемый текст. Что исправляет это «почти», так это использование android:gravity = "bottom" и android:ellipsize = "end", однако я не хочу иметь эллипс

Hector 03.05.2019 10:17

Вы можете попробовать использовать внешнюю библиотеку, если она работает; github.com/grantland/android-autofittextview

stalkerstacker 03.05.2019 10:25
Ответ принят как подходящий

Использовать:

android:ellipsize = "end"

Добавьте это свойство в свой TextView, вы увидите текст с самого начала, а в конце третьей строки будут 3 точки (...), чтобы указать, что текст состоит более чем из 3 строк.

Использовать:

android:gravity = "start"

нижнее значение гравитации изменит поведение дисплея. Вы меняете высоту TextView с запасом.

Другие вопросы по теме