Выравнивание текста/макета в Android (textAlignment, gravity)

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

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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