it-swarm.com.ru

Выравнивание текста / макета в Android (выравнивание текста, гравитация)

Какая разница между Android:textAlignment а также Android:gravity?

51
Chrizzor

Все, что я вижу, это то, что textAlignment является членом класса View, а гравитация - членом класса TextView. Таким образом, для TextView и его подклассов вы можете использовать гравитацию, в то время как вы можете использовать textAlignment для всех видов.

Поскольку TextView и его подклассам требуются дополнительные функции выравнивания текста, вы можете видеть, что есть больше опций в гравитации, где в textAlignment есть только базовые опции. Хотя это только мое предположение, потому что я не нашел четкой документации о разнице.

Вы можете увидеть эти две ссылки документации: textAlignment и gravity .

48
stinepike

С API 15, Android:textAlignment может не дать желаемого результата. Приведенный ниже фрагмент пытается отцентрировать первый объект TextView с помощью Android:textAlignment="center". Второй использует Android:gravity="center_horizontal". textAlignment не действует, а гравитация работает нормально. С API 17+ textAlignment центрирует текст, как и ожидалось.

Чтобы быть уверенным, что ваш текст выровнен правильно со всеми выпусками, я бы выбрал гравитацию.

<LinearLayout
    Android:layout_width="50dp"
    Android:layout_height="match_parent"
    Android:orientation="vertical">

    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="5dp"
        Android:text="Fri"
        Android:textAlignment="center"
        Android:textSize="16sp" />

    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="29"
        Android:gravity="center_horizontal"
        Android:textSize="18sp" />

</LinearLayout>

Результирующий макет в API 15:
Resulting layout in API 15

Результирующий макет в API 17+:
Resulting layout in API 17+

10
Will P

Насколько я видел, textAlignment в основном не используется. По его описанию, он должен делать правое или левое выравнивание. Гравитация кажется улучшенным выравниванием текста.

5
Pedro Matos

Еще один момент, не упомянутый явно:

Если в вашем приложении поддержка RTL отключена, например, с помощью Android:supportsRtl="false" в теге манифеста application, тогда ViewtextAlignment не работает для позиционирования текста, пока работает TextViewgravity.

Еще одна причина предпочесть gravity.

2
laalto