Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第二次单击时只调用textview(其TextIsSelectable=";true";)上的Onclick事件_Java_Android_Android Intent_Textview_Onclicklistener - Fatal编程技术网

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()
的问题。我试过了,但一切似乎都很好