siy*_*iyb 204
TextView使用android:clickable="false"和android:focusable="false"或v.setClickable(false)和声明你的不可点击/可聚焦v.setFocusable(false).应立即将点击事件分派给TextView父母.
注意:
为了实现这一点,您必须直接添加点击parent.或者设置
android:clickable="false"和android:focusable="false"其直接父传听众进一步父.
Lui*_*ano 44
我认为您需要使用其中一种方法,以便能够在将事件发送到适当的组件之前拦截它:
Activity.dispatchTouchEvent(MotionEvent) - 这允许您的Activity在将所有触摸事件分派到窗口之前拦截它们.
ViewGroup.onInterceptTouchEvent(MotionEvent) - 这允许ViewGroup在将事件分派给子视图时观察事件.
ViewParent.requestDisallowInterceptTouchEvent(boolean) - 在父视图上调用此方法以指示它不应使用onInterceptTouchEvent(MotionEvent)拦截触摸事件.
更多信息在这里.
希望有所帮助.
小智 15
有时这只会有所帮助:
View child = parent.findViewById(R.id.btnMoreText);
child.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View parent = (View) v.getParent();
parent.performClick();
}
});
Run Code Online (Sandbox Code Playgroud)
另一种变体,并非总是如此:
child.setOnClickListener(null);
Run Code Online (Sandbox Code Playgroud)
Ahm*_*agh 10
放
android:duplicateParentState="true"
Run Code Online (Sandbox Code Playgroud)
在孩子中,视图从其直接父母而不是从其自身获得其可绘制状态(聚焦,按压等).您可以为父级设置onclick,并在单击子项时调用它
这个答案与Alexander Ukhov 的答案类似,只是它使用触摸事件而不是点击事件。这些事件允许父级显示正确的按下状态(例如,连锁反应)。这个答案也是用 Kotlin 而不是 Java 给出的。
view.setOnTouchListener { view, motionEvent ->
(view.parent as View).onTouchEvent(motionEvent)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
96179 次 |
| 最近记录: |