在Android中自定义键盘输入的EditText内部没有移动光标

时间:2014-04-23 09:52:00

标签: android android-edittext android-cursor

我通过以下方式禁用了软键盘:

   InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

用于EditText视图。正如我所料,键盘被禁用。我正在使用自己的自定义键盘来输入值。我能够在第一次或最后一个位置或指定位置首次显示光标。

但我面临的问题是将光标移动到我按下的位置,这意味着我无法在我在EditText中输入的文本中移动光标。 是否有任何解决方案可以将光标移动到自定义键盘输入的文本中。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用editText1.setSelection(position)设置光标的位置。 您可以使用TextWatcher课程并获得长度并放置您的cusor位置。

((EditText)findViewById(R.id.searchBox1)).addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before, int count) {

        String searchString = s.toString();
        int textLength = searchString.length();
        editText1.setSelection(textLength);         
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    public void afterTextChanged(Editable s) {
    }
});

答案 1 :(得分:0)

也许这可以帮助现在的某个人。注册EditText时,必须捕获OnTouch事件。

editText.setOnTouchListener((v, event) -> {
    EditText et = (EditText) v;
    et.onTouchEvent(event);

    return false; //very important
 });

不要错过调用 showCustomKeyboard(view)方法并隐藏系统键盘的onClickListener。