为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蓝山帝景 2019-12-21 12:45:26
我在布局中有一个TextView,谁的背景是一个选择器。然后,将TextView的文本设置为“从HTML跨接”。然后,我使用LinkMovementMethod设置TextView。现在,当我点击TextView时,click事件不会发送到其父布局以触发选择器。应该如何解决?
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

我认为您需要使用这些方法之一,以便能够在事件发送到适当的组件之前对其进行拦截:


Activity.dispatchTouchEvent(MotionEvent) -这允许您的活动在将所有触摸事件分派到窗口之前拦截它们。


ViewGroup.onInterceptTouchEvent(MotionEvent) -这允许ViewGroup在将事件调度到子View时监视它们。


ViewParent.requestDisallowInterceptTouchEvent(boolean) -在父视图上调用此方法,以指示它不应使用onInterceptTouchEvent(MotionEvent)拦截触摸事件。


查看完整回答
反对 回复 2019-12-21
?
慕容森

TA贡献1853条经验 获得超18个赞

TextView使用android:clickable="false"和android:focusable="false"或v.setClickable(false)和声明您不可点击/不能聚焦的内容v.setFocusable(false)。点击事件应立即发送到TextView的父级。


注意:


为了实现这一点,您必须在其直接框中添加click parent。或者设置 android:clickable="false"和android:focusable="false"其直接父传听众进一步父。


查看完整回答
反对 回复 2019-12-21
?
弑天下

TA贡献1818条经验 获得超8个赞

有时只有这样有帮助:


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);


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 505 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信