在我的应用中,我想在背景图像上绘制。我有以下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顺序。
有什么想法吗?谢谢你的帮助! :)
答案 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
,只需设置按钮属性以保持在底部等。