如何将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=""
。