EditText的光标位置

12

假设用户在 EditText 中输入了一些文本,之后触摸屏幕的其他位置,导致光标位置发生了改变:如何确定新的光标位置?

2个回答

26

简单版:

myEditText.getSelectionStart();

如果你想在事件发生时做出反应,你可以尝试:

myEditText.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent event) {
        // view is myEditText here
    }
});

event 允许区分按下和释放之间的差异。

EditText 还有一个 setOnClickListener() 方法,值得一看。

编辑: 我忘了提到 onSelectionChanged(int selStart, int selEnd),其中如果位置发生变化,selEnd 等于 selStart。


2
澄清一下:必须在EditText子类中覆盖onSelectionChanged()函数才有用。当用户实际触摸屏幕时,才会触发OnTouch事件。当用户触摸屏幕或通过某些物理输入(例如D-pad中心、轨迹球点击等)时,可以触发OnClick事件。 - greg7gkb

1

最好且安全的方法是使用 TextWatcher


        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
                int cursorIndex = start + 1;
        }

用户可以在不改变文本的情况下移动光标。这种方法在那里是无用的。 - Ahmed Shahid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接