我的工作布局看起来像这样:
这是相应的xml:
<FrameLayout
android:id="@+id/red"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/green"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@drawable/blueyellow_border">
<ImageButton
android:id="@+id/blue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:background="@drawable/selector_blue_border"
android:padding="5dp"
android:src="@drawable/blue_icon"
tools:ignore="ContentDescription"/>
<ImageButton
android:id="@+id/yellow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:layout_toRightOf="@id/blue"
android:background="@drawable/selector_yellow_border"
android:padding="5dp"
android:src="@drawable/selector_yellow_icon"
tools:ignore="ContentDescription"/>
</RelativeLayout>
<TextView
android:id="@+id/green"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@drawable/green_border"
android:text="@string/green_string"/>
</RelativeLayout>
</FrameLayout>
问题是根据层次结构视图,此布局效率不高。在下文中,我指的是层次结构视图的交通灯颜色方案。
ImageButton
,布局为“红色”,测量为“黄色”。ImageButton
,我得到“黄色”用于绘图。TextView
,我得到“黄色”布局。RelativeLayout
,我得到“红色”用于测量和绘制。RelativeLayout
,我得到“红色”用于测量,“黄色”用于布局和绘图。有没有办法做我正在做的事情(即使用选择器作为背景和图像源)并且仍然更有效率?
答案 0 :(得分:2)
您只能使用一个RelativeLayout。这样的事情(代码未经验证):
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/some_red_background">
<TextView
android:id="@+id/green"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@drawable/green_border"
android:text="@string/green_string"/>
<ImageButton
android:id="@+id/yellow"
tools:ignore="ContentDescription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/green"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_margin="2dp"
android:background="@drawable/selector_yellow_border"
android:padding="5dp"
android:src="@drawable/selector_yellow_icon"/>
<ImageButton
android:id="@+id/blue"
tools:ignore="ContentDescription"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/yellow"
android:layout_above="@id/green"
android:background="@drawable/selector_blue_border"
android:padding="5dp"
android:src="@drawable/blue_icon"/>
</RelativeLayout>