android - 在带有可选文本的 TextView 上使用 onClick - 如何避免双击?

标签 android onclick textview onclicklistener

这太奇怪了,但是如果您将 onClickListener 放在具有 android:textIsSelectable="true"TextView(或不可编辑的 EditText)上 - 它需要不是一次,而是两次。 我在 3 部手机上进行了检查,所有手机仅在第二次点击后才执行 onClick

当然,如果你制作 focusable="false"android:textIsSelectable="false" 它从第一次点击开始工作,但文本选择不起作用.

请帮我解决这个问题

最佳答案

以 XML 格式设置到您的 TextView

android:textIsSelectable="true"

之后将 onTouchListener 设置为您的 TextView 并在其中执行此操作:

if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) view.requestFocus(); 

它为每次点击 TextView 设置焦点。 毕竟将 onClickListener 设置为您的 TextView。

我的自定义 RecyclerView.Adapter 的 Holder 也有同样的问题。所以,如果您需要,我会为您剪下:

class RollHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnTouchListener {

    private TextView textView;

    RollHolder(View itemView) {
        super(itemView);
        textView = (TextView) itemView.findViewById(R.id.text_view);
        textView.setOnClickListener(this);
        textView.setOnTouchListener(this);
    }

    @Override //Слушатель нажатия
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.text_view:
                //Do here that you need
                break;
        }
    }

    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        switch (view.getId()){
            case R.id.text_view:
                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) view.requestFocus();
                break;
        };
        return false;
    }
}

关于android - 在带有可选文本的 TextView 上使用 onClick - 如何避免双击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22653641/

相关文章:

Android - 属性集

javascript - 如果输入值为字符串,则更改窗口位置

javascript - onclick 将 <code> 复制或突出​​显示到剪贴板

android - 如何在 Android 中创建 "floating TextViews"?

android - 如何在折线图中添加目标线 - AChartEngine

java - 在android中发送短信时显示 Activity

java - 如何使用 OnClickListener 检查当前选择了哪个 TextView(三个)

Android - 我无法以编程方式设置 EditText 布局宽度

android - 位置应用程序不断崩溃

javascript - 如何调用通过单击 HTML 按钮将文本输入只读文本框的函数?