Android布局匹配对等方

时间:2011-05-17 16:42:03

标签: android layout match

我正在寻找布局系统的一些见解。是否有人知道Android布局系统中允许 peer View元素(意味着在同一容器中组合在一起的视图)匹配其高度和宽度属性而不创建插页式容器的方法管理他们的规模?

例如:布局有两个TextView元素。第一个应该始终将宽度包装到其文本内容,但第二个应该匹配第一个的宽度。 WORKS的解决方案就是:

<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 个答案:

答案 0 :(得分:5)

我认为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>

答案 1 :(得分:0)

由于视图处于相关布局中,请使用android:layout_below =“id / firsttv”android:layout_alignLeft =“id / firsttv”和android:layout_alightRight =“id / firsttv”