如何禁用Android中的View上的任何事件?

时间:2012-05-07 10:35:18

标签: android android-layout android-view

我的问题很简单:如何禁用Android中的View上的任何事件? (包括消除它的可聚焦性,就像我只是希望它在视觉上存在但在其他一切上都不存在) 它是否适用于整个视图树? (就像我在root上禁用事件一样,所有事件都将为其子节点禁用?)。

现在,在您说出任何内容之前,我已经尝试了以下所有内容:

这些方法似乎都不合适。

我已经在WebView上直接尝试了它们,并且在所有内容的父版面上都尝试了它们,但我仍然能够与它进行交互。

有什么想法吗?

谢谢!

修改#1

在视图顶部添加视图需要禁用的解决方案不起作用。实际上,仍然可以点击内部视图,我尝试了一个简单的例子:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="#ff0000">
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Click Me!"
        />
    </LinearLayout>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00000000"
    />
</FrameLayout>

此处仍然可以点击button

修改#2

我想这样做的原因与我几周前提到的following question有关。

我所拥有的是ListView充当导航栏,位于View下方,用于保存我的应用内容。这个实现的问题是当我尝试在其顶部的图层中有一个可聚焦视图时滚动ListView时,ListView不滚动,而是顶视图需要关注的焦点(当有一个时就是这种情况 WebviewEditText等)。

是的,正如其中一个答案中提到的,我可以通过覆盖WebView来禁用setOnTouchListener上的所有点击事件,但视图仍然集中在一起,我认为这就是我仍然拥有的原因与我的导航栏相同的问题。

1 个答案:

答案 0 :(得分:5)

只需在视图顶部放置视图即可。您可以通过设置view.visibility = gone / visible。来关闭它。

<FrameLayout>
<WebView/>
<FrameLayout This view will be on top/>
</FrameLayout>

编辑:只是简单地链接到此链接:https://stackoverflow.com/a/3856199/969325 基本上禁用webview的所有触摸事件。试过吗?

编辑2 reedit:尝试为列表视图下方的顶视图设置可见性。