, क्लिक करने योग्य = "true" करने के लिए RecyclerView के मद लेआउट की स्थापना की तरह लग रहा कुछ स्पर्श इवेंट पूरी तरह से उपभोग करते हैं, खासकर MotionEvent.ACTION_DOWN
(ACTION_MOVE और ACTION_UP बाद में काम कर रहे हैं):एंड्रॉयड: जब क्लिक करने योग्य ब्लॉक onTouch घटनाओं के लिए सेट RecyclerView आइटम
item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/demo_item_container"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"> <-- this what breaks touch event ACTION_DOWN
....
</LinearLayout>
onCreate() में बहुत ही बुनियादी RecyclerView सेटअप करने के बाद:
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list);
... //Standard recyclerView init stuff
//Please note that this is NOT recyclerView.addOnItemTouchListener()
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.d("", "TOUCH --- " + motionEvent.getActionMasked());
//Will never get here ACTION_DOWN when item set to android:clickable="true"
return false;
}
});
क्या यह इरादा व्यवहार या बग RecyclerView में है क्योंकि यह अभी भी एक पूर्वावलोकन है?
पीएस। मैं चाहता हूं कि यह दबाए गए राज्य पर प्रतिक्रिया करने के लिए दस्तावेज़ों के अनुसार क्लिक करने योग्य हो और क्लिक पर लहर प्रभाव हो। जब गलत ACTION_DOWN पर सेट किया गया है ठीक काम कर रहा है लेकिन दबाया गया राज्य ट्रिगर नहीं किया गया है और चयन योग्य बैकग्राउंड का कोई प्रभाव नहीं है।
'की स्थापना एंड्रॉयड का प्रयास करें:: अगर आप अभी भी ACTION_DOWN चाहते हैं, जैसे, गतिविधि में इसे पाने के लिए कोशिश फ़ोकस करने योग्य =" true "', मैं इस परीक्षण नहीं किया, जिसके कारण मैं प्रदान नहीं कर रहा हूँ यह एक उत्तर के रूप में है, लेकिन मेरे लिए ACTION_DOWN एक फोकस से संबंधित घटना की तरह लगता है। – RyanJohnstone
@Iija, क्या आपको कोई समाधान मिला? मैं अभी कुछ दिनों के लिए एक ही समस्या पर फंस गया हूँ। – Manu
@ मॅनू, मैंने सोचा कि यह इरादा व्यवहार है। इसके बजाय आप recyclerView.addOnItemTouchListener() के बजाय जो चाहते हैं उसे प्राप्त करने में सक्षम होना चाहिए .... –