Можно ли указать несколько значений гравитации в элементе счетчика custom_style.xml?

У меня есть textview.xml, стиль элементов для счетчиков.

<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="left|center_horizontal"
  android:textSize="18sp">
</TextView>

Я знаю, что можно указать и (Gravity.LEFT | Gravity.CENTER_HORIZONTAL), но в xml это не работает - текст перемещается только влево.


person 87element    schedule 08.03.2011    source источник
comment
Что вы пытаетесь достичь? Вы можете указать горизонтальную гравитацию и вертикальную гравитацию таким образом, но две горизонтальные настройки не имеют смысла.   -  person adamp    schedule 08.03.2011
comment
Моя ошибка, извините. На самом деле это было left|center_vertical, конечно. Теперь работает, спасибо за указание.   -  person 87element    schedule 09.03.2011


Ответы (2)


87элемент,

Я полагаю, вы намеревались использовать layout_gravity, а используете только gravity??

Да, вы можете объединить два из этих атрибутов layout_gravity вместе с '|' как указано в документации: http://developer.android.com/reference/android/R.attr.html#layout_gravity

Но даже используя layout_gravity вместо gravity (как указано в комментарии adamp), настройки, которые вы пытаетесь объединить, не имеют смысла. Вы говорите ему в основном выравнивать по левому краю и по центру в одном ряду. И left, и center_horizontal в данном случае относятся к горизонтальному положению.

Где вы пытаетесь выровнять TextView относительно родителя?

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

|[ 1 ] [ 2 ] [ 3 ]|

|[ 4 ] [ 5 ] [ 6 ]|

|[ 7 ] [ 8 ] [ 9 ]|

  1. Вверху слева: android:layout_gravity="top|left"

  2. Вверху по центру: android:layout_gravity="top|center_horizontal"

  3. Вверху справа: android:layout_gravity="top|right"

  4. В центре слева: android:layout_gravity="center_vertical|left"

  5. Самый центр: android:layout_gravity="center"

  6. В центре справа: android:layout_gravity="center_vertical|right"

  7. Внизу слева: android:layout_gravity="bottom|left"

  8. Внизу по центру: android:layout_gravity="bottom|center_horizontal"

  9. Внизу справа: android:layout_gravity="bottom|right"

Надеюсь это поможет!

person Will Tate    schedule 08.03.2011
comment
Спасибо за ответ, карта очень помогла! Тем не менее, я должен отметить, что я собирался использовать именно атрибут android:gravity. Мой TextView идет как параметр макета элемента для ArrayAdapter моего счетчика; android:layout_gravity не делал никаких изменений. Было близко к решению, за исключением этой глупой ошибки позиционирования, на которую вы и Адамп указали мне. Спасибо еще раз! - person 87element; 09.03.2011
comment
в чем смысл: `android:layout_gravity=center_vertical|right|end `есть ли противоречие между значениями? - person Elad Benda; 29.09.2018

На всякий случай, если кто-то еще был таким же глупым, как я. Не забудьте убрать пробелы. android:gravity="center_horizontal|bottom", но android:gravity="center_horizontal | bottom" недопустимо.

person Walter Kimaro    schedule 01.01.2018