问题 在第二次单击时调用textview上的onclick事件(具有TextIsSelectable =“true”)


我有一个 onClickListener 在...上 textview textview有它的标志 selectable。 但是 onclick 我指定的事件只在调用时被调用 textview 再次点击。 在第二次之后,它会使onclick正确,但如果是另一个 textview 那也是 selectable 用一个 onclicklistener 它也只是第二次调用,然后它工作正常,但然后另一个只再次工作。我找不到这个奇怪事件的来源。

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

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

3515
2017-10-25 08:23


起源

尝试一下 onTouchListener 上 TextView。 @Wesley Egbertsen - GrIsHu
除了设置 TextIsSelectable="true" 设置 android:clickable="true" 为您的TextView。 - GrIsHu
如果我在onTouchListeners上制作它们,你就不能再选择文本了,因为onTouch得到优先考虑。 - Wesley Egbertsen
你找到了解决方案吗? - henry74918
我还没有找到解决方案。 - Wesley Egbertsen


答案:


我也遇到过这个问题。每当触摸文本视图时 onTouch, 然后 OnSelection 最后 OnClick 叫做。 如果我清楚地了解您的问题,您希望在用户时在文本视图中选择文本 double taps 要么 long presses 就像通常的文字选择一样,但是当用户只需点击一次就可以了 onClick 发挥作用。我认为以下内容可能对您有所帮助。

添加一个 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;
     }
});

12
2018-02-05 10:33



弗罗西的建议是正确的方向。我可以确认它对我有用。 - Qylin
它应该作为答案检查。效果很好。 - BArtWell
在onSingleTapConfirmed()中调用您的预期操作并且不调用performClick()非常重要,这会导致用户想要第二次选择时出现问题。 - mattlaabs


设置这个......

TextisSelectable = "false"

我认为它将正常工作


0
2017-10-25 08:28



然后它将正常工作,但我也希望文本可以选择。 - Wesley Egbertsen