如何禁用一个EditText光标定位和文本选择? (机器人)(How to disable cu

2019-06-25 17:25发布

我在寻找一种方法来防止用户从任何地方移动光标位置。 光标应该始终保持在当前的EditText值的末尾。 此外,用户不应该能够选择在任何的EditText。 你有什么想法如何使用一个EditText意识到,在Android的?

为了澄清:用户应该能够插入文本,但只在最后。

Answer 1:

我有同样的问题。 这结束了对我的工作:

public class CustomEditText extends EditText {

    @Override
    public void onSelectionChanged(int start, int end) {

        CharSequence text = getText();
        if (text != null) {
            if (start != text.length() || end != text.length()) {
                setSelection(text.length(), text.length());
                return;
            }
        }

        super.onSelectionChanged(start, end);
    }

}


Answer 2:

这将光标焦点复位到文本的最后一个位置

editText.setSelection(editText.getText().length());

此方法将禁用触摸光标移动

public class MyEditText extends EditText{

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
         final int eventX = event.getX();
         final int eventY = event.getY();
         if( (eventX,eventY) is in the middle of your editText)
         {
              return false;
         }
         return true;
    }
}

而且您可以使用XML属性

机器人:cursorVisible

或Java功能

setCursorVisible(布尔)

禁用的EditText的闪烁的光标



Answer 3:

试试这个:

mEditText.setMovementMethod(null);


Answer 4:

这听起来像这样做是为了使自己的最佳方式CustomEditText类和重写/修改任何相关方法。 你可以看到源代码,为EditText这里。

public class CustomEditText extends EditText {

    @Override
    public void selectAll() {
        // Do nothing
    }

    /* override other methods, etc. */

}


文章来源: How to disable cursor positioning and text selection in an EditText? (Android)