Относительный гравитационный центр RelativeLayout не работает

Я пытаюсь горизонтально центрировать несколько представлений в RelativeLayout, который является базой.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:background="@android:color/transparent" >

Это не работает. Я установил centerInParent в true для одного из видов и это действительно сработало. Тем не менее, я не могу использовать это решение, потому что у меня есть 2 взгляда бок о бок, которые нужно сосредоточить вместе. Попытка оптимизировать это, поэтому я хочу избежать макетов раскроя, особенно Linear, внутри друг друга.

Есть ли что-то очевидное, что мне не хватает? Я думал, что этот атрибут сделан для этой ситуации.

Ответ 1

Таким образом, мое исправление для этой проблемы заключается только в том, чтобы использовать составную возможность вывода текста. Я просто разбил кнопку и использовал drawableRight, чтобы показать значок поиска.

Ответ 2

Я ответил на аналогичную проблему с тремя представлениями без использования вложенных ViewGroups.

fooobar.com/questions/169087/...

Это проверено в API 11.

В двух горизонтальном случае:

<RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="center"
  android:background="@android:color/black"
  >
  <Button
    android:id="@+id/apply"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="APPLY"
    android:textSize="20sp"
    />
  <Button
    android:id="@+id/undo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="UNDO"
    android:textSize="20sp"
    android:layout_toRightOf="@id/apply"
    />
</RelativeLayout>

Для двух вертикальных случаев просмотра:

<RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="center"
  android:background="@android:color/black"
  >
  <Button
    android:id="@+id/apply"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="APPLY"
    android:textSize="20sp"
    />
  <Button
    android:id="@+id/undo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="UNDO"
    android:textSize="20sp"
    android:layout_below="@id/apply"
    />
</RelativeLayout>

Ответ 3

Вам нужно будет вставить несколько макетов вместе. Чтобы центрировать что-то в RelativeLayout, вы используете android:layout_centerInParent="true" для ребенка. Если вы попытаетесь сосредоточить несколько ребят, они попадут под/друг над другом.

Поэтому, например, вы можете использовать LinearLayout с двумя представлениями в качестве дочернего элемента RelativeLayout, а LinearLayout имеет android:orientation="horizontal" и android:layout_centerInParent="true". LinearLayout теперь должен быть центрирован в RelativeLayout, причем два дочерних рядом друг с другом.

Ответ 4

Оберните два вида в LinearLayout, а затем центрируйте LinearLayout в RelativeLayout, как и для одного TextView.