Android-макет соответствия сверстников - PullRequest
2 голосов
/ 17 мая 2011

Я ищу некоторые сведения о системе макетов. Кто-нибудь знает метод в системе макетов Android, который позволяет peer View элементам (то есть представлениям, сгруппированным в одном контейнере) соответствовать их атрибутам высоты и ширины, не создавая промежуточный контейнер только для управления их размеры?

Например: макет имеет два элемента TextView. Первый должен всегда переносить ширину к своему текстовому содержимому, но второй должен соответствовать ширине первого. Решение, которое работает, это:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView
      android:id="@+id/textOne"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" />
    <TextView
      android:id="@+id/textTwo"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content" />
  </LinearLayout>
</RelativeLayout>

Однако мне пришлось создать специальный контейнер для обоих видов, чтобы они оба соответствовали ширине любого текста в первом; добавляя ненужную сложность в иерархию. Я хотел бы знать, есть ли атрибут макета, который я мог бы использовать, чтобы сделать что-то вроде этого:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <TextView
    android:id="@+id/textOne"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
  <TextView
    android:id="@+id/textTwo"
    android:layout_widthMatchPeer="@id/textOne" <!-- An attribute like this -->
    android:layout_height="wrap_content"
    android:layout_below="@id/textOne" />
</RelativeLayout>

Создание жесткого измерения, так как ширина побеждает цель дать возможность обернуть первичный элемент. Есть ли техника, о которой кто-то знает, или атрибут, который я пропустил, для достижения этой цели? Может быть в любой стандартной раскладке, я просто выбрал RelativeLayout в качестве примера.

Кроме того, что если элементы не расположены рядом друг с другом?

Приветствие.

Ответы [ 2 ]

5 голосов
/ 17 мая 2011

Я думаю, класс RelativeLayout может делать то, что вы хотите:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <TextView
    android:id="@+id/textOne"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
  <TextView
    android:id="@+id/textTwo"
    android:layout_alignLeft="@id/textOne"
    android:layout_alignRight="@id/textOne"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/textOne" />
</RelativeLayout>
0 голосов
/ 17 мая 2011

, поскольку представления находятся в относительном макете, используйте android: layout_below = "id / firsttv" android: layout_alignLeft = "id / firsttv" и android: layout_alightRight = "id / firsttv"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...