Man*_*uel 57 android insert android-edittext
我想通过按下按钮将常量字符串插入EditText.该字符串应插入EditText中的当前位置.如果我使用EditText.append
文本在EditText的末尾插入.
我怎样才能做到这一点?我找不到合适的方法.
Man*_*uel 92
Cpt.Ohlund给了我正确的提示.我解决了它,现在,部分使用了EditText.getSelectionStart()
,但我意识到你也可以用相同的表达式替换所选文本而你不需要String.subString()
.
int start = Math.max(myEditText.getSelectionStart(), 0);
int end = Math.max(myEditText.getSelectionEnd(), 0);
myEditText.getText().replace(Math.min(start, end), Math.max(start, end),
textToInsert, 0, textToInsert.length());
Run Code Online (Sandbox Code Playgroud)
这适用于两者,在当前位置插入文本并替换用户选择的任何文本.的Math.max()
,因为,如果在没有的EditText选择或光标,在第一和第二行必要的getSelectionStart()
和getSelectionEnd()
都将返回-1.的Math.min()
和Math.max()
在第三行,因为用户可能已经向后选择的文本,从而开始将具有比这是不允许对端有较高的值是必要的Editable.replace()
.
Ole*_*ich 74
这似乎更简单:
yourEditText.getText().insert(yourEditText.getSelectionStart(), "fizzbuzz");
Run Code Online (Sandbox Code Playgroud)
但是,如果要使用插入的文本替换任何选定的文本,Manuel的答案可能会更好.
对于 Kotlin只需这样做:
editText.text.insert(editText.selectionStart, "Your Text Here")
Run Code Online (Sandbox Code Playgroud)
我认为此功能将为您提供帮助:
public void insertConstantStr(String insertStr) {
String oriContent = editText.getText().toString();
int index = editText.getSelectionStart() >= 0 ? editText.getSelectionStart() : 0;
StringBuilder sBuilder = new StringBuilder(oriContent);
sBuilder.insert(index, insertStr);
editText.setText(sBuilder.toString());
editText.setSelection(index + insertStr.length());
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37297 次 |
最近记录: |