0

我一直在阅读如何在 EditText 中设置光标位置?我的 EditText 中确实有一个特定问题,这可能是问题的原因。在我的 xml 布局中,我定义了一个名为“edit”的 EditText,其inputType = none. 根据 android 开发者文档,如果 inputType = none,则文本不可编辑。“无”的原因是我防止 android 通用键盘在我的 User-Interface 上弹出的方式,效果很好。我想做这样的事情:用户输入: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 键盘弹出在我定制的键盘之上。

任何想法或想法都会有所帮助

4

1 回答 1

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) {

        }
    });
于 2017-07-29T02:53:32.980 回答