Android EditText - 可编辑但不可选择?

时间:2016-03-30 15:42:28

标签: android android-edittext ontouchevent selectable

是否可以使EditText可编辑但不可选?我希望能够编辑一些文本,然后将其拖动到页面周围。它可以工作但是当你拖动它时,它算作长按,所以它会选择一些文字。

当我点击EditText时,是否需要执行另一个视图的操作,而是捕获触摸事件,然后在事件操作启动时将其隐藏并将焦点返回到editText?这看起来很乱/过于复杂。

5 个答案:

答案 0 :(得分:3)

使用setTextIsSelectable(false)实现了所需的行为。诀窍是首先运行setTextIsSelectable(true)。它克服了SDK中的错误/功能(如果您感兴趣,请调试此方法)。在Android 7.1.1上测试。

editText.setTextIsSelectable(true); // needed in order to next line work properly
editText.setTextIsSelectable(false);

// restore soft keyboard functionality broken by previous line
editText.setFocusableInTouchMode(true);
editText.setFocusable(true);
editText.setClickable(true);

答案 1 :(得分:0)

这应该有效:android:textIsSelectable="false"

第二种可能的解决方案是将空的onLongClickListener放入消耗事件。

OnLongClickListener longClickListener = new OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {\
        return true; //true = event consumed, false = event not consumed
    }
};

答案 2 :(得分:0)

可能不是您正在寻找的解决方案,但是当EditText落实到位时,您可以通过调用editText.clearFocus();确保无选择

如果您需要保留拖动之前存在的选择,这将是一个问题,但如果您只是想确保选择已被清除则不会。

答案 3 :(得分:0)

我找到了一个比我上面提到的解决方案稍微不那么苛刻的解决方案,然后尝试了(并且它没有工作),但这确实有效:

首先这样做,

image_text.cancelLongPress();

显然取消了任何继承的点击,而不仅仅是长按,即它显示光标,并且它不会选择任何文字,但它也不会调出键盘,但是&#39很容易:

View v = activity.getWindow().getCurrentFocus();
        if (v != null) {
            InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(v, 0);
        }

答案 4 :(得分:0)

<div class="circular-container">
    <div class="circular" style="background-image: url('{{myPhoto}}')"></div>
</div>