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

Amo*_*tir 6 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>
Run Code Online (Sandbox Code Playgroud)

在这里仍然可以点击button.

编辑#2

我想这样做的原因与我几周前提出的以下问题有关.

我所拥有的是一个ListView导航栏,它位于一个View包含我的应用内容的下方.这个实现的问题是,当我尝试滚动浏览ListView时,在它上面的图层中有一个可聚焦的视图,好的是ListView不滚动,而是它是焦点的顶视图(当有的时候就是这种情况) a WebviewEditText等等).

所以在其中一个答案中提到的是,我可以WebView通过覆盖禁用任何点击事件,setOnTouchListener但视图仍然集中在一起,我认为这就是为什么我的导航栏仍然存在同样的问题.

War*_*zit 6

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

<FrameLayout>
<WebView/>
<FrameLayout This view will be on top/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

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

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