Выравнивание текста/макета в 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:
Результирующий макет в API 17+: