如何将onClick事件传递给它的父母在Android上?

我有一个布局的背景是一个select器的TextView。 TextView的文本被设置为从HTML生成。 然后我用LinkMovementMethod设置TextView。

现在,当我点击TextView时,单击事件不会发送到其父布局来触发select器。

这应该如何解决? 谢谢!

我想你需要使用这些方法之一,以便能够在发送到适当的组件之前拦截事件:

Activity.dispatchTouchEvent(MotionEvent) – 这可以让您的Activity在发送到窗口之前拦截所有的触摸事件。

ViewGroup.onInterceptTouchEvent(MotionEvent) – 这允许ViewGroup在事件被分派到子视图时观察事件。

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

更多信息在这里 。

希望有所帮助。

通过使用android:clickable="false"android:focusable="false" v.setClickable(false) android:focusable="false"v.setClickable(false)v.setFocusable(false)声明TextView不可点击/可聚焦。 点击事件现在应该分派给TextView的父项。

注意:

为了实现这一点 ,你必须添加点击其直​​接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); 

 android:duplicateParentState="true" 

在孩子看来,意见从其直接的父母而不是从其本身得到其可绘制的状态(集中,压制等)。 你可以为父母设置onclick,并调用点击的孩子

如果你的TextView创build点击问题,比从你的XML文件中删除android:inputType=""