我一直在阅读帖子中的答案 How to set cursor position in EditText? 我的EditText中确实存在一个特定问题,这可能是导致问题的原因。在我的xml布局中,我定义了一个名为“edit”的EditText,其 inputType = none 。根据android开发者文档,如果inputType = none,则文本不可编辑。之所以会出现“无”,这就是我阻止Android通用键盘弹出我的用户界面的方式,这非常有效。 我想做这样的事情:用户输入:5 + sin(),现在光标editText光标位置应该在符号后面,但是由于inputType = none,所以没有显示光标。我需要做的是移动下一个文本输入放在()符号之间的位置。会发生的是下一个文本输入正好在符号后面。 所以如果下一个文本输入是4,那么:5 + sin()4,我不想要这个。我更喜欢以下内容:5 + sin(4)
我使用的是定制键盘,按键“()”。这是我尝试过的,没有任何成功:
//once the user presses the "( )" button:
Selection.setSelection(edit.getText(),edit.getText().length() - 2);
我尝试过的另一种方式:
//once the user presses the "( )" button:
edit.setInputType(InputType.TYPE_CLASS_NUMBER);
edit.setSelection(edit.getText().length() - 2);
edit.setInputType(InputType.TYPE_NULL);
这两种方式都没有对我有用。我还尝试将editText的inputType设置为xml文件中除“none”之外的其他内容。但是,Android键盘弹出我的自定义键盘。
任何想法或想法都会有所帮助
答案 0 :(得分:1)
我不知道你的()按钮究竟是如何工作的,但你可以尝试一下这个。
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if( s.length()>0 && s.charAt(s.length()-1) == ')' ){
yourEditText.setSelection(s.length()-1);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});