我想要两个相邻的视图,第一个是固定大小的,第二个是与第一个相邻的使用剩余空间的视图。
我可以很容易地使用LinearLayout
和 权重来做到这一点,但我想避免“嵌套权重不利于性能”的问题。
是否有另一种可以完成等效的布局类型?如果有,请举个例子。
我想要两个相邻的视图,第一个是固定大小的,第二个是与第一个相邻的使用剩余空间的视图。
我可以很容易地使用LinearLayout
和 权重来做到这一点,但我想避免“嵌套权重不利于性能”的问题。
是否有另一种可以完成等效的布局类型?如果有,请举个例子。
ARelativeLayout
可以做你想做的事,例如:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button1"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="Button"
android:background="#99cc00" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_toRightOf="@id/button1"
android:text="Button"
android:background="#0077cc"/>
</RelativeLayout>
第一个Button
宽度为 200dp,第二个将拉伸以填充父级剩余宽度的其余部分。
您还可以使用 aRelativeLayout
将两个视图拆分为相同大小,以避免在某些布局上具有双重权重。
我相信这可以通过RelativeLayout 来完成。例子:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentLeft="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toRightOf="@id/button">
...
</LinearLayout>
</RelativeLayout>
你可以试试
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Button
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="view with fixed size " />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="view with remaining space" />
</LinearLayout>
这是权重在 LinearLayout 中的工作原理:
At first, it will deduct the fixed dimension, then according to the weight, divide the available space, assign to the views which specify the weight attribute