如何安装Android Z命令?

时间:2011-09-20 06:50:23

标签: android android-layout android-framelayout

在我的应用中,我想在背景图像上绘制。我有以下xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg2"
>
    <com.myapp.drawings.DrawingSurface
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/drawingSurface"
    />
    <LinearLayout
            android:orientation="horizontal"
            android:background="@drawable/bg2" 
            android:layout_width="match_parent" 
            android:layout_height="match_parent">
        <Button
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="OK"
                android:onClick="onClick"
                android:id="@+id/colorBlueBtn"
        />
        <Button
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="Save"
                android:onClick="onClick"
                android:id="@+id/saveBtn"
        />
    </LinearLayout>
</FrameLayout>

不,问题是,当我尝试在绘图表面上绘图时,我的绘图没有显示。显示了背景图像和按钮。一旦我保存它,我的应用程序生成的图像文件就会显示出来。我认为问题是我的布局的Z顺序。

有什么想法吗?谢谢你的帮助! :)

2 个答案:

答案 0 :(得分:8)

首先绘制以xml出现的项目。因此,表面视图位于线性布局之下。

答案 1 :(得分:5)

根据Android Developers' description of FrameLayout

  

子视图以堆栈形式绘制,包含最近添加的子视图   在顶部。

因此,在您的xml中,LinearLayout被绘制为最后一个,并且因为它具有match_parent属性,它会完全隐藏您的绘图表面。

因此,请尝试使用RelativeLayout,并将LinearLayout属性设置为wrap_content,类似:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg2"
>
    <com.myapp.drawings.DrawingSurface
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/drawingSurface"
    />
    <LinearLayout
            android:orientation="horizontal"
            android:background="@drawable/bg2" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true">
        <Button
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="OK"
                android:onClick="onClick"
                android:id="@+id/colorBlueBtn"
        />
        <Button
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="Save"
                android:onClick="onClick"
                android:id="@+id/saveBtn"
        />
    </LinearLayout>
</RelativeLayout>

你也可以完全省略LinearLayout,只需设置按钮属性以保持在底部等。