6

bir RecyclerView liste öğesi aracılığıyla tıklayın ve Adapter:Bir <code>LinearLayoutManager</code> ile <code>RecyclerView</code> var

@Override public int getItemViewType(int position) { 
    return position == 0? R.layout.header : R.layout.item; 
} 

İşte header.xml var:

<View xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/header" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/header_height" 
    /> 

Ne elde etmek istiyorum olduğunu bir delik olması RecyclerView adresinde, RecyclerView'un arkasındaki herhangi bir şeye tıklayabilirim.

 android:background="@android:color/transparent" 
     android:background="@null" 
     android:clickable="false" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:longClickable="false" 

nasıl şeffaf birinci madde listesinde (arkasında bir şey dokunma etkinliklerinin izin) yapmak, ama yine de yer işgal izin verebilir: Ben boşuna kombinasyonları aşağıdaki nitelikleri çok çalıştı?

cevap

8

Sen RecyclerView arkasında bakış ebeveyne sizin "deliklerin" tüm OnClickListener/OnTouchListener set olan ve ana ViewGroup dokunmatik kullanım için MotionEvent ve dokunmatik olayların herhangi temsilci olabilir. TWiStErRob tarafından

Güncelleme:

class HeaderViewHolder extends RecyclerView.ViewHolder { 
    public HeaderViewHolder(View view) { 
     super(view); 
     view.setOnTouchListener(new OnTouchListener() { 
      @Override public boolean onTouch(View v, MotionEvent event) { 
       // http://stackoverflow.com/questions/8121491/is-it-possible-to-add-a-scrollable-textview-to-a-listview 
       v.getParent().requestDisallowInterceptTouchEvent(true); // needed for complex gestures 
       // simple tap works without the above line as well 
       return behindView.dispatchTouchEvent(event); // onTouchEvent won't work 
      } 
     }); 

XML gerekli özel bir şey, sadece düz görünümler (söz konusu özelliklerin hiçbiri) var. v.getParent(), RecyclerView'dur ve bu uzun yöntem, parmağınızı "delik" üzerinde tutarken kaydırma hareketinin başlatılmasını durdurur. Listede

Benim "delik" görünümü de yarı saydam bir arka plan var, ama biz rötuşları elle teslim çünkü bunun bir önemi yok.

+0

Hmm, ilginç :) Ben bu yüzden sadece dokunmatik dinleyici denemeye değer, karmaşık hareketler (örneğin hızlıca kaydırın) çalışmak istiyorum.) – TWiStErRob

+0

Ayrıca, daha sonra işlemek olaylar kutsal ise arkasına temsilci istiyoruz 'RecyclerView' sizi ele dokunma herhangi biri için herhangi bir delik tespit etmek izin verebilir! – puj

+0

Çok süper herif; – puj

İlgili konular