更高效的布局可能吗?
A more efficient layout possible?
我的工作布局看起来像这样:
这是根据 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>
问题是根据层次结构视图,此布局效率不高。下面我指的是Hierarchy View的红绿灯配色方案。
- 对于 "yellow"
ImageButton
我得到 "red" 布局和 "yellow" 测量。
- 对于 "blue"
ImageButton
我得到 "yellow" 用于绘图。
- 对于 "green"
TextView
我得到 "yellow" 布局。
- 对于内部
RelativeLayout
我得到 "red" 用于测量和绘图。
- 对于外部
RelativeLayout
,我得到 "red" 用于测量,"yellow" 用于布局和绘图。
有没有办法做我正在做的事情(即使用背景和图像源的选择器)并且仍然更有效?
您只能使用一个 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>
我的工作布局看起来像这样:
这是根据 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>
问题是根据层次结构视图,此布局效率不高。下面我指的是Hierarchy View的红绿灯配色方案。
- 对于 "yellow"
ImageButton
我得到 "red" 布局和 "yellow" 测量。 - 对于 "blue"
ImageButton
我得到 "yellow" 用于绘图。 - 对于 "green"
TextView
我得到 "yellow" 布局。 - 对于内部
RelativeLayout
我得到 "red" 用于测量和绘图。 - 对于外部
RelativeLayout
,我得到 "red" 用于测量,"yellow" 用于布局和绘图。
有没有办法做我正在做的事情(即使用背景和图像源的选择器)并且仍然更有效?
您只能使用一个 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>