6

私の質問は簡単です: Android のビューでイベントを無効にする方法は? (視覚的にそこにあるように、他のすべてには存在しないように、フォーカス可能性を削除することを含む)そして、それはビューツリー全体で機能しますか?(ルートでイベントを無効にすると、その子のすべてのイベントが無効になりますか?)。

さて、あなたが何かを言う前に、私は次のすべてを試しました:

そして、これらの方法はどれもうまく機能していないようです。

すべての親レイアウトだけでなく、直接それらを試しましたが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

私がこれをやりたい理由は、私が数週間前に尋ねた次の質問に関連しています。

私が持っているのは、アプリのコンテンツを保持するのListView下にあるナビゲーション バーとして機能することです。Viewこの実装の問題は、ListViewその上のレイヤーにフォーカス可能なビューがあるときにスクロールしようとすると、ListViewスクロールせず、代わりにフォーカスを取得するのがトップ ビューになることです (ある場合がそうです)。 a Webviewまたは anEditTextなど)。

はい、答えの1つで述べたように、WebViewオーバーライドすることでクリックイベントを無効にすることができますsetOnTouchListenerが、ビューはフォーカスされたままです。これが、ナビゲーションバーで同じ問題を抱えている理由だと思います。

4

1 に答える 1

6

ビューの上にビューを配置するだけです。view.visibility = gone/visible を設定することで、オンとオフを切り替えることができます。

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

編集: このリンクにつまずいた: https://stackoverflow.com/a/3856199/969325 基本的に、webview のすべてのタッチ イベントを無効にします。それを試しましたか?

編集 2 再編集: リストビューの下のトップ ビューの可視性を設定してみてください。

于 2012-05-07T10:45:10.577 に答える