উপরের সমস্ত উত্তর সঠিক তবে ফলাফলটি ভিন্ন হয় যদি ভিউ হয় clickable
বা না হয়clickable
উদাহরণস্বরূপ , আমার কাছে এর মতো LinearLayout
1 Button
এবং 1 রয়েছেTextView
<LinearLayout
android:id="@+id/linearlayout_root"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0aa"
android:orientation="vertical">
<Button
android:id="@+id/button_click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="40dp"
android:text="Button Click"
android:textSize="20sp" />
<TextView
android:id="@+id/textview_click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="40dp"
android:text="TextView Click"
android:textSize="20sp"
android:background="#e4e4e4"
/>
</LinearLayout>
ক্রিয়াকলাপে, আমার মতো কোড রয়েছে
class MainActivity : AppCompatActivity() {
val TAG = "TAG"
@SuppressLint("ClickableViewAccessibility")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById<LinearLayout>(R.id.linearlayout_root).setOnTouchListener { v, event ->
Log.i(TAG, "LinearLayout onTouch event " + getDisplayAction(event.action))
false
}
findViewById<Button>(R.id.button_click).setOnTouchListener { v, event ->
Log.i(TAG, "Button onTouch event " + getDisplayAction(event.action))
false
}
findViewById<TextView>(R.id.textview_click).setOnTouchListener { v, event ->
Log.i(TAG, "TextView onTouch event " + getDisplayAction(event.action))
false
}
}
private fun getDisplayAction(action: Int): String {
return when (action) {
MotionEvent.ACTION_DOWN -> "DOWN"
MotionEvent.ACTION_MOVE -> "MOVE"
MotionEvent.ACTION_UP -> "UP"
MotionEvent.ACTION_CANCEL -> "CANCEL"
MotionEvent.ACTION_OUTSIDE -> "OUTSIDE"
else -> "UNKNOWN"
}
}
}
কেস 1 Linear onTouch return **FALSE**
, Button onTouch return **FALSE**
,TextView onTouch return **FALSE**
বাটনে ক্লিক করুন
I/TAG: Button onTouch eventDOWN
I/TAG: Button onTouch eventMOVE
I/TAG: Button onTouch eventUP
টেক্সটভিউতে ক্লিক করুন
TAG: TextView onTouch eventDOWN
TAG: LinearLayout onTouch eventDOWN
লিনিয়ারলাউট ক্লিক করুন
TAG: LinearLayout onTouch eventDOWN
কেস 2 Linear onTouch return **FALSE**
, Button onTouch return **TRUE**
,TextView onTouch return **TRUE**
বাটনে ক্লিক করুন
Similar to case 1
টেক্সটভিউতে ক্লিক করুন
TAG: TextView onTouch event DOWN
TAG: TextView onTouch event MOVE
TAG: TextView onTouch event UP
লিনিয়ারলাউট ক্লিক করুন
Similar to case 1
কেস 3 Linear onTouch return **TRUE**
, Button onTouch return **FALSE**
,TextView onTouch return **FALSE**
বাটনে ক্লিক করুন
Similar to case 1
টেক্সটভিউতে ক্লিক করুন
TAG: TextView onTouch event DOWN
TAG: LinearLayout onTouch event DOWN
TAG: LinearLayout onTouch event MOVE
TAG: LinearLayout onTouch event UP
লিনিয়ারলাউট ক্লিক করুন
TAG: LinearLayout onTouch event DOWN
TAG: LinearLayout onTouch event MOVE
TAG: LinearLayout onTouch event UP
বিঃদ্রঃ
- ডিফল্ট
TextView
হ'ল not clickable
, আমরা যখন android:clickable="true"
এক্সএমএল বা সেট করি তখন সেটি ক্লিকযোগ্য হয় abletextView.setOnClickListener(...)
- আপনি যখন ডিবাগ করেন,
event MOVE
আমার লগের চেয়ে বেশি কল করতে পারেন (এটি আপনি কীভাবে ট্যাপ করেন তার ভিত্তিতে)
সারসংক্ষেপ
onTouch
রিটার্ন true
বা ভিউ হচ্ছে clickable
, ভিউ সব পাবেন onTouchEvent
onTouch
ফিরে আসুন false
এবং দেখুন তা নয় clickable
, ভিউ টাচএভেন্টে নেক্সট পাবেন না (এটি পিতামাতার এটি পেতে পারে)
আশা করি এটি ডেমোকে সহায়তা করবে