我通过:禁用了软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
用于EditText视图。正如我所料,键盘被禁用了。我使用自己的自定义键盘来输入值。我能够在第一个或最后一个位置或第一次在指定位置显示光标。
但我面临的问题是将光标移动到我按下的位置,这意味着我无法在EditText中键入的文本中移动光标。有没有任何解决方案可以将光标移动到自定义键盘输入的文本中。提前谢谢。
您可以使用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) {
}
});
也许这对现在的人仍然有帮助。当您注册EditText时,您必须捕获OnTouch事件。
editText.setOnTouchListener((v, event) -> {
EditText et = (EditText) v;
et.onTouchEvent(event);
return false; //very important
});
不要错过onClickListener,它调用showCustomKeyboard(view)方法并隐藏系统的键盘。