如何使视图非难以处理。 我有两个画布视图在框架布局中相互堆叠。 两个画布都采用整个屏幕区域,两者都是透明的。 我想在上部画布上显示一些PNG,让用户在下部画布上绘制。
问题是当用户触摸屏幕时,触摸输入由上部画布拍摄,因为它什么都不做(在下部画布上绘图),没有任何反应。
我希望上部画布仅作为覆盖视图,没有交互,也没有分配事件,所有这些都应该被低视图使用。如果我将上部叠加设置为不可见,我可以在下部画布上绘制(因为现在较低的画布正在接收所有输入)。
此外,canvas不是标准画布,而是自定义画布。它直接来自View类。 但我认为派生的观点不会引起问题。我只是不知道如何继续。
我尝试在上部画布上使用onTouch()并调用下部画布的onTouch(),但没有奏效。 我正在测试其他一些东西,比如2个按钮上的dispatchTouch(),但似乎没有什么可以确定的。非常感谢帮助。
编辑:添加了XML布局代码
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.samsung.sdraw.CanvasView
android:id="@+id/canvas1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="cnvs1Click"
android:text="Canvas1" />
<com.samsung.sdraw.CanvasView
android:id="@+id/canvas2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Canvas2"
android:onClick="cnvs2Click"/>
</FrameLayout>
但我仍然认为问题会被View(s)解决。 画布来自S pen SDK
答案 0 :(得分:1)
这可能是一个特殊情况,没有玩过以查看这是否属实,但通常在你的onTouch事件等中你只是在你没有处理事件时返回false,并且事件在每个视图的触摸中冒泡事件直到某些东西返回true,表示它被处理了。
如果您创建一个视图(上层)只是从onTouch返回false,则onTouch的下方视图应该接收该事件。
答案 1 :(得分:0)
尝试在XML中添加到根视图
android:focusable="false"
android:focusableInTouchMode="false"