Java 第二次单击时只调用textview(其TextIsSelectable=";true";)上的Onclick事件
我在Java 第二次单击时只调用textview(其TextIsSelectable=";true";)上的Onclick事件,java,android,android-intent,textview,onclicklistener,Java,Android,Android Intent,Textview,Onclicklistener,我在textview上有一个onClickListener,而textview有一个标志,它是可选择的。 但是,我指定的onclick事件只有在第二次单击textview时才会调用。 在第二次调用onclick right之后,如果另一个textview也可以使用onclick listener进行选择,那么它也只会被第二次调用,然后工作正常,但另一个只会第二次工作。我找不到这些奇怪事件的来源 telefoonTXT.setOnClickListener(new OnClickListener(
textview
上有一个onClickListener
,而textview有一个标志,它是可选择的
。
但是,我指定的onclick
事件只有在第二次单击textview
时才会调用。
在第二次调用onclick right之后,如果另一个textview
也可以使用onclick listener
进行选择,那么它也只会被第二次调用,然后工作正常,但另一个只会第二次工作。我找不到这些奇怪事件的来源
telefoonTXT.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {startTelIntent();}}
);
urlTXT.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {startWebIntent();}
});
设置此
TextisSelectable = "false"
我认为它会正常工作我也面临着这个问题。无论何时,只要首先在触摸上触摸文本视图,然后在选择上触摸,最后调用触摸。 如果我清楚地理解了您的问题,那么当用户像通常的文本选择一样双击或长按时,您希望在文本视图中选择文本,但当用户只需单击它一次时,您希望单击。我认为以下几点可能会对你有所帮助 将
手势检测器添加到文本视图中
GestureDetectorCompat mDetector;
mDetector = new GestureDetectorCompat(this, new GestureDetector.SimpleOnGestureListener());
mDetector.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// This is where u add your OnClick event
startTelIntent();
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.d("dtttt", "double tap");
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}
});
telefoonTXT.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mDetector.onTouchEvent(event);
return false;
}
});
我刚刚在TextView Xml中使用:
android: TextIsSelectable="true"
android: clickable="true"
对我来说很好。第一次点击称为onclick事件,并随时长按选择文本。双击一次调用两个方法。但是,在我的情况下,这没有问题,这是为我调用onclick并一次选择文本而工作的,而无需使用大量代码。
还有一个好处,它在adapter和recycler视图中也可以正常工作 在我的例子中,焦点改变监听器可以工作,但在androidTv中使用它时,请注意使用D-pad移动的情况
textView.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus && textView.measuredHeight > textView.lineHeight * textView.lineCount) {
//your click event
}
}
我检查文本是否可以滚动,然后不要点击事件在TextView
上使用onTouchListener
进行尝试@Wesley EgbertsenAnd除了设置TextIsSelectable=“true”
之外,还为您的TextView设置了android:clickable=“true”
。如果我将它们设置在TouchListeners上,你不能再选择文本了,因为我认为onTouch获得了优先权。你找到解决方案了吗?我仍然没有找到解决方案。然后它会正常工作,但我也希望文本可以选择。Frosty的建议是正确的方向。我可以确认它对我有效。它应该作为答案进行检查。工作正常。在OnSingleTapConfiged()中真正调用您想要的操作,而不是调用performClick(),这一点很重要,这会在用户第二次想要选择时导致问题。让我非常惊讶的是,textIsSelectable
如此糟糕。您的解决方案运行良好,+1。@mattlaabs,您能否详细说明从onSingleTapConfirmed()
调用performClick()
的问题。我试过了,但一切似乎都很好