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 вида бок о бок, которые должны быть центрированы вместе. Попытка оптимизировать это так, чтобы я хотел избежать раскроя раскладок, особенно линейных, внутри друг друга.

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

4 ответа

Решение

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

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

/questions/31443743/tsentrirovat-neskolko-elementov-v-relativelayout-ne-pomeschaya-ih-v-kontejner/31443762#31443762

Это проверено в 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>

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

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

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

Другие вопросы по тегам