<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/actions"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/action_previous"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/action_next"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_weight="3"/>
<View
android:id="@+id/action_next"
android:layout_width="0dp"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/action_previous"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_weight="7"/>
</androidx.constraintlayout.widget.ConstraintLayout>
ImageActivity.kt
swipe_parent.setOnTouchListener { v, event ->
Toast.makeText(this@ImageActivity, "OnTouch called $v, $event", Toast.LENGTH_SHORT).show()
return@setOnTouchListener true
}
action_previous.setOnClickListener {
Toast.makeText(this, "Previous", Toast.LENGTH_SHORT).show()
}
action_next.setOnClickListener {
Toast.makeText(this, "Next", Toast.LENGTH_SHORT).show()
}
我读了很多评论,指出子视图是否存在onClickListener,那么OnTouchListener调用将不会传递给父视图(如果视图的结构如上所述)。从逻辑上讲,这也是有道理的,因为很难区分点击和触摸。
如果这是我的要求,如何实现?
答案 0 :(得分:0)
解决此问题的最快方法是使用ontouch而不是onclick, 但是模仿onclick功能,在子视图ontouch内检查此情况,仅在action_down情况下才执行,这对您有帮助。
if (event.action == MotionEvent.ACTION_DOWN)
答案 1 :(得分:0)
我遇到了同样的问题。我通过设置解决了
android:clickable="false"
android:descendantFocusability="blocksDescendants"
在父视图中。