2016-10-10 7 views
1

私はviewを持っています。ボタン/レイアウトをクリックして表示したいときは、別の場所に触れると表示します。どうしたらいいですか? dispatchTouchEvent(Motion Event)にコードを書きました。しかし、私はそれを行う別の方法があると思う。外部タッチイベントでrecyclerviewを非表示にする方法は?

+0

「RecyclerViewで表示」とはどういう意味ですか?あなたはrecyclerViewのアイテムを意味しますか? – Umarov

+0

RecyclerViewはビュー内にあることを意味しますが、このコンテキストでは –

答えて

0

RecyclerViewの外部を別のクリック可能なビューで塗りつぶし、そのビューに対してsetOnTouchListenerメソッドを実装できます。ここでは例です:

のは、我々はRelativeLayoutの上部にRecyclerViewを持っているとしましょう:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="?attr/selectableItemBackground" 
android:clickable="true" 
android:focusable="true"> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recyclerView" 
    android:layout_width="match_parent" 
    android:layout_height="300dp" 
    android:scrollbars="vertical" /> 

    <!--View below is just to fill the remaining space. We will use this view to catch outside touch--> 

<View 
    android:id="@+id/outside_detector" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@id/recyclerView" 
    android:clickable="true" 
    android:focusable="true"/> 
</RelativeLayout> 

そして、我々は我々がRecyclerViewの外側をクリックしたときに、私たちrecyclerviewを隠し、表示したい:

((View) findViewById(R.id.outside_detector)).setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View arg0, MotionEvent arg1) { 
       if(arg1.getAction() == MotionEvent.ACTION_DOWN){ 
        if(recyclerView.getVisibility() == View.VISIBLE){ 
         recyclerView.setVisibility(View.INVISIBLE); 
        }else{ 
         recyclerView.setVisibility(View.VISIBLE); 
        } 
       } 
       return true; 
      } 
     }); 

ボタンクリックでrecyclerviewを表示したい場合は、ボタンClickListenerの内側にrecyclerView.setVisibility(View.VISIBLE)メソッドを記述してください!

希望すると便利です。

+0

thaksは関係ありませんが、このRelativeLayoutで多くのビューを作成すると、より簡単なインターセプトイベントのためのもう一つの 'view'が作成されます。 –

+0

申し訳ありませんが、私はそれを取得していません。あなたが言ったことを明確にしてもらえますか? – Umarov

+0

'view 'の作成にはいくつかの副作用があるかもしれないと思った。 –

関連する問題