Android:一行的Relativelayout背景

时间:2014-04-07 12:29:10

标签: android relativelayout

对于下面的控件布局,我使用的是2线性布局的相对布局。 1 B1,B2和B3的线性布局,灰色背景和B4,B5和B6的1个线性布局。

我已经读过在相对布局中使用线性布局会减慢渲染速度。

我是如何摆脱线性布局的?特别是我无法获得行B1,B2和B3的灰色背景。或者您认为使用这种方式应该没问题。提前感谢您的帮助。

enter image description here

编辑:

下面是我刚开始构建的xml,如果可能的话,试图摆脱任何子布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="15dp"
        android:src="@drawable/ic_launcher" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/abc_ic_search_api_holo_light" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_below="@+id/imageButton1"
        android:layout_centerHorizontal="true"
        android:text=" Test Label" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="54dp"
        android:background="@android:color/darker_gray" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:layout_toRightOf="@+id/linearLayout1"
            android:text="Button" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/button1"
            android:layout_alignBottom="@+id/button1"
            android:layout_marginLeft="18dp"
            android:layout_toRightOf="@+id/imageView1"
            android:text="Button" />

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/button2"
            android:layout_alignBottom="@+id/button2"
            android:layout_toRightOf="@+id/button2"
            android:text="Button" />
    </LinearLayout>



    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/linearLayout1"
        android:layout_marginTop="31dp" >

        <Button
            android:id="@+id/button6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/button5"
            android:layout_toLeftOf="@+id/imageButton1"
            android:text="Button" />

        <Button
            android:id="@+id/button4"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignRight="@+id/linearLayout2"
            android:layout_centerVertical="true"
            android:text="Button" />

        <Button
            android:id="@+id/button5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/button4"
            android:text="Button" />
    </LinearLayout>

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView1"
        android:layout_alignTop="@+id/listView1"
        android:layout_marginRight="15dp"
        android:text="TextView" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/linearLayout2"
        android:layout_marginTop="18dp" >
    </ListView>    

</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

如果没有看到你的xml,唯一可以实现此目的的方法是使用单个相对布局,其中包含另一个包含按钮行的LinearLayout。

虽然你是对的,但最好是限制嵌套布局的数量(不仅仅是线性布局,而是任何类型的嵌套布局)。

在这种情况下,要设置行背景,至少需要一个嵌套的LinearLayout,这不是一个大问题。

编辑:在查看XML之后,我认为这是实现您想要的最佳方式。