私の質問は簡単です: 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
が、ビューはフォーカスされたままです。これが、ナビゲーションバーで同じ問題を抱えている理由だと思います。