2012-05-07 11 views
6

私の質問は簡単です:Androidのビューでどのようにイベントを無効にするのですか? (視覚的にそこに存在したいが、他のすべてには存在しないように、その焦点を取り除くことを含む) それは全体のビューツリーで機能しますか? (ルート上のイベントを無効にした場合と同様に、すべてのイベントはその子に対して無効になります)。今Androidのビューでイベントを無効にするにはどうすればよいですか?

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

これらの方法は真剣に機能しているようには見えません。

私はWebViewで直接試してみましたが、すべての親のレイアウトでも試しましたが、まだ対話できます。

ありがとうございます!

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

私はこれをしたい理由は、私は数週間前に尋ねたfollowing questionに関連しています。

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

回答の1で述べたようにそうです、私はsetOnTouchListenerをオーバーライドすることにより、WebView上の任意のクリックイベントを無効にすることができますが、ビューは集束ままで、私はこれは私がまだ私のナビゲーションバーと同じ問題を抱えていた理由だと思います。

答えて

5

ビューの上に単にビューを配置します。あなたはview.visibility = gone/visibleを設定することでそれをオフに切り替えることができます。

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

編集:ちょうどこのリンク時にstumpled:https://stackoverflow.com/a/3856199/969325 は、基本的にはWebViewのために、すべてのタッチイベントを無効にします。試してみた?

編集2編集:リストビューの下にあるトップビューの表示を消すように設定してください。

+0

私は消滅したくありません!私はちょうどそれに任意のイベント(クリックのような)を無効にしたい... –

+0

@AmokraneChentirはそれを透明にする... android:background = "android:color/transparent" < - もし存在すれば、 – Warpzit

+0

ああ、私はあなたの答えを正しく読まなかった。実際には別のビューを上にしても、内部ビューでそれをクリックすることはできます。 –

関連する問題