1

我怎样才能使视图变得不难处理。我有两个画布视图在框架布局中相互堆叠。两个画布都占据整个屏幕区域并且都是透明的。我想在上部画布上显示一些 PNG,并让用户在下部画布上绘制。

问题是当用户触摸屏幕时,触摸输入由上部画布进行,并且由于它什么都不做(在下部画布上绘图),所以什么也没有发生。

我希望上层画布充当覆盖视图,没有交互,也没有分配事件,所有这些都应该由下层视图使用。如果我将上部叠加层设置为不可见,我可以在下部画布上绘制(因为现在下部画布正在接收所有输入)。

画布也不是标准画布,而是自定义画布。它直接派生自 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) 解决。Canvas 来自S pen SDK

4

2 回答 2

1

这可能是一个特殊情况,没有玩过,看看这是否是真的,但通常在你的 onTouch 事件等中,如果你没有处理事件,你只会返回 false ,并且事件会通过每个视图的触摸事件冒泡,直到发生某些事情返回 true,表示它已处理命中。

如果你让你的一个视图(上层)只是从它的 onTouch 中返回 false,那么下层的 onTouch 视图应该会接收到该事件。

于 2012-05-03T09:08:46.370 回答
0

尝试在 XML 中添加到根视图

android:focusable="false"
android:focusableInTouchMode="false"
于 2012-05-03T09:08:27.123 回答