EditText的光标位置

fyo*_*iev 11 android android-ui

假设用户已将一些文本写入EditText,然后触摸屏幕上的其他位置,这会导致光标位置发生变化:如何确定新的光标位置?

sjn*_*ngm 25

简单版本:

myEditText.getSelectionStart();
Run Code Online (Sandbox Code Playgroud)

如果您想对活动做出反应,您可以尝试

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

event 允许区分按下和释放.

EditText也有setOnClickListener()可能值得一看的.

编辑:onSelectionChanged(int selStart, int selEnd)如果位置发生变化,我忘了提及selEnd等于selStart的位置.

  • 为了澄清:必须在EditText子类中重写onSelectionChanged()才有用.OnTouch事件仅在用户逐字触摸屏幕时发生.当用户触摸屏幕或通过某些物理输入(例如D-pad中心,轨迹球点击等)时,可以触发OnClick事件. (2认同)