文本视图上的 Onclick 事件(具有 TextIsSelectable=“true”)在第二次单击时调用 ony

我有一个在a上,文本视图有标志,它是.但是,我指定的事件仅在第二次单击 时调用。在第二次之后,它调用了onclick right,但是如果另一个也与它一起,它也只被调用第二次,那么它工作正常,但另一个只工作第二次。我找不到这些奇怪事件的来源。onClickListenertextviewselectableonclicktextviewtextviewselectableonclicklistener

telefoonTXT.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {startTelIntent();}}
);

urlTXT.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {startWebIntent();}
});

答案 1

我也面临这个问题。每当首先触摸文本视图时,就会调用 和 最后。如果我清楚地理解你的问题,你想在文本视图中选择文本,当用户或喜欢通常的文本选择,但当用户只是点击它,一旦你想要功能。我认为以下内容可能会对您有所帮助。onTouchOnSelectionOnClickdouble tapslong pressesonClick

将 添加到文本视图。gestureDetector

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

答案 2

在我的情况下,焦点更改监听器工作正常,但请注意,当您在androidTv中使用它时,请使用方向键移动

textView.setOnFocusChangeListener { v, hasFocus ->
    if (hasFocus && textView.measuredHeight > textView.lineHeight * textView.lineCount) {
    //your click event               
    }
}

我检查文本是否可以滚动,然后不要采取点击事件


推荐