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

2024-01-18

我的问题很简单:如何禁用 Android 中视图上的任何事件? (包括消除它的聚焦能力,就像我只是希望它在视觉上存在,但在其他一切上都不存在) 它适用于整个视图树吗? (就像如果我禁用根上的事件,则其子级的所有事件都将被禁用?)。

现在,在你说任何话之前,我已经尝试了以下所有操作:

  • 设置启用 http://developer.android.com/reference/android/view/View.html#setEnabled%28boolean%29
  • 设置焦点 http://developer.android.com/reference/android/view/View.html#setFocusable%28boolean%29
  • 设置选定的 http://developer.android.com/reference/android/view/View.html#setSelected%28boolean%29
  • 设置可点击 http://developer.android.com/reference/android/view/View.html#setClickable%28boolean%29
  • 设置激活 http://developer.android.com/reference/android/view/View.html#setActivated%28boolean%29

说真的,这些方法似乎都不起作用。

我直接在a上尝试过WebView,以及所有内容的父布局,但我仍然能够与其交互。

任何想法?

Thanks!

EDIT#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.

EDIT#2

我想这样做的原因与以下问题 https://stackoverflow.com/questions/10029447/how-to-cleanly-superpose-scrollableviews-in-android我几周前问过。

我有的是ListView充当导航栏,位于View其中包含我的应用程序的内容。这个实现的问题是,当我尝试滚动浏览ListView当其上方的图层中有可聚焦视图时,ListView不滚动,而是顶部视图获得焦点(当有一个Webview or an EditText etc.).

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


只需将一个视图放在您的视图之上即可。您可以通过设置 view.visibility = gone/visible 将其打开或关闭。

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

编辑:刚刚偶然发现了这个链接:https://stackoverflow.com/a/3856199/969325 https://stackoverflow.com/a/3856199/969325基本上禁用网络视图的所有触摸事件。尝试过吗?

编辑2重新编辑:尝试将列表视图下方的顶部视图的可见性设置为消失。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何禁用 Android 中视图上的任何事件? 的相关文章

随机推荐