Android布局中的图层

时间:2011-10-31 16:04:35

标签: android android-layout

我有一个带有背景图像的屏幕,底部有两个按钮。我使用的代码类似于:

 <?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="vertical">
    <LinearLayout android:layout_width="wrap_content"
        android:layout_height="0dip" android:layout_weight="1"
        android:orientation="vertical" android:background="@drawable/mainbg">

    </LinearLayout>

        <ImageButton android:layout_height="wrap_content"
        android:background="#FF000000" android:src="@drawable/button1"
        android:padding="5dp"
        android:id="@+id/ImageButton1" android:layout_width="fill_parent">
    </ImageButton>

    <ImageButton android:src="@drawable/button2" android:background="#FF000000" android:id="@+id/ImageButton2"
        android:layout_width="fill_parent" android:focusable="true" android:saveEnabled="false" android:layout_height="wrap_content">
    </ImageButton>

    <TextView android:text="mywebsite.com" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>

在此代码中,背景屏幕被粉碎以适合未使用的剩余屏幕空间。换句话说,这两个按钮消耗了20%的屏幕空间,然后将图像粉碎成剩余的80%。

我的问题: 有没有办法制作某种分层效果,以便我的按钮位于背景图像上方的图层上?

4 个答案:

答案 0 :(得分:1)

我不是肯定的我理解你的问题。但似乎图像“manbg”是按钮的兄弟。如果您希望它是整个视图的背景,您应该使该图像成为PARENT线性布局的可绘制对象。

我认为这会做你想做的事情:

<?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="vertical" android:background="@drawable/mainbg">


        <ImageButton android:layout_height="wrap_content"
        android:background="#FF000000" android:src="@drawable/button1"
        android:padding="5dp"
        android:id="@+id/ImageButton1" android:layout_width="fill_parent">
    </ImageButton>

    <ImageButton android:src="@drawable/button2" android:background="#FF000000" android:id="@+id/ImageButton2"
        android:layout_width="fill_parent" android:focusable="true" android:saveEnabled="false" android:layout_height="wrap_content">
    </ImageButton>

    <TextView android:text="mywebsite.com" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
顺便问一下,你是如何设计你的用户界面的? Netbeans有一个非常流畅的UI GUI。它会使这些问题变得微不足道。

希望这会有所帮助。

答案 1 :(得分:1)

选择RelativeLayout并使用android:background设置背景。

现在将按钮放在底部,取一个LinearLayout并在同一个内部取2个图像按钮。在两个按钮中提及 android:width="0dp" android:layout_weight="1dp"

您想要的精确XML布局:

<RelativeLayout 
    android:id="@+id/scrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/round_red">

    <LinearLayout 
        android:id="@+id/layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">

           <ImageButton
            android:id="@+id/button1"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:src="@drawable/icon"
            android:layout_weight="1">
           </ImageButton>

            <ImageButton
            android:id="@+id/button2"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:src="@drawable/icon"
            android:layout_weight="1">
           </ImageButton>
    </LinearLayout>

</RelativeLayout>

更新

为什么我建议使用RelativeLayout? 我建议您使用RelativeLayout,因为您可以根据父/子视图的相对位置调整和显示视图。如果您有足够的信心,那么在使用RelativeLayout在Android中设计UI时,您不必采用更多的子布局。

答案 2 :(得分:1)

对于您的设计,<RelativeLayout/>可能会优于<LinearLayout/>

<?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="vertical" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:background="@drawable/mainbg" >

        <ImageButton
            android:id="@+id/ImageButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/button1"
            android:layout_above="@id/ImageButton2"
            android:layout_centerHorizontal="true" >
        </ImageButton>

        <ImageButton
            android:id="@+id/ImageButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/button2"
            android:layout_alignParentBottom="true"
            android:layout_marginTop="10dp"
            android:layout_centerHorizontal="true" >
        </ImageButton>

    </RelativeLayout>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="mywebsite.com" >
    </TextView>

</LinearLayout>

答案 3 :(得分:0)

我觉得这很简单。您可以设置作为主布局的父布局的背景图像。所以主要的布局是背景图像,而其他的则没有。

android:layout_height =“0dip”所以这将占据图像高度的高度。所以你也需要解决这个问题。