如何在Android上将视图的onClick事件传递给其父级?

我在布局中有一个TextView,谁的背景是一个选择器。然后,将TextView的文本设置为“从HTML跨接”。然后,我使用LinkMovementMethod设置TextView。


现在,当我点击TextView时,click事件不会发送到其父布局以触发选择器。


应该如何解决?


蓝山帝景
浏览 463回答 3
3回答

肥皂起泡泡

我认为您需要使用这些方法之一,以便能够在事件发送到适当的组件之前对其进行拦截:Activity.dispatchTouchEvent(MotionEvent) -这允许您的活动在将所有触摸事件分派到窗口之前拦截它们。ViewGroup.onInterceptTouchEvent(MotionEvent) -这允许ViewGroup在将事件调度到子View时监视它们。ViewParent.requestDisallowInterceptTouchEvent(boolean) -在父视图上调用此方法,以指示它不应使用onInterceptTouchEvent(MotionEvent)拦截触摸事件。

慕容森

TextView使用android:clickable="false"和android:focusable="false"或v.setClickable(false)和声明您不可点击/不能聚焦的内容v.setFocusable(false)。点击事件应立即发送到TextView的父级。注意:为了实现这一点,您必须在其直接框中添加click parent。或者设置 android:clickable="false"和android:focusable="false"其直接父传听众进一步父。

弑天下

有时只有这样有帮助:View child = parent.findViewById(R.id.btnMoreText);    child.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View v) {            View parent = (View) v.getParent();            parent.performClick();        }    });另一个变体并不总是有效:child.setOnClickListener(null);
打开App,查看更多内容
随时随地看视频慕课网APP