更有效的布局可能吗?

时间:2016-06-14 07:47:04

标签: android android-layout android-relativelayout hierarchyviewer

我的工作布局看起来像这样:

Scheme of the layout

这是相应的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,我得到“红色”用于测量,“黄色”用于布局和绘图。

有没有办法做我正在做的事情(即使用选择器作为背景和图像源)并且仍然更有效率?

1 个答案:

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