Android 如何获取EditText输入的文本中任意文字的具体位置?

Android 如何获取EditText输入的文本中任意文字的具体位置?
使用edittext.setSelection(edittext.getText().length)只能获取最后字符的位置,怎样获取当中任意文字的位置。比如:edittetx输入文字有abcdtghjk,通过手指点击b,如何返回当前文字的位置?

阅读 5k
2 个回答

通过此方法禁止弹出系统键盘,调用自定义键盘,并且在editext的setOnTouchListener事件中要返回false,不然无法将光标移到手指点击的位置。
private void showEditText(EditText edit) {

if (android.os.Build.VERSION.SDK_INT <= 10) {//4.0以下
    edit.setInputType(InputType.TYPE_NULL);
} else {
    this.act.getWindow().setSoftInputMode(
            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    try {
        Class<EditText> cls = EditText.class;
        Method setShowSoftInputOnFocus;
        setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus",
                boolean.class);
        setShowSoftInputOnFocus.setAccessible(true);
        setShowSoftInputOnFocus.invoke(edit, false);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题