我想清除EditText上光标位置之前的整个文本。假设文本 1234567890 ,光标位于字符4 之后 1234 | 567890 现在我的要求是我有一个自定义按钮,删除光标位置前的文本。
我正在使用editext.getText().clear();
清除文字,但清除整个文字。如果光标位于文本末尾,那就很好了。
有可能达到我的要求吗?如果有,怎么样?请帮我解决这个问题。
答案 0 :(得分:3)
以下是如何处理它:
您将使用以下方式获得光标位置:
editText.getSelectionStart();
或
editText.getSelectionEnd();
注意:如果未选择任何文本,则两种方法都将返回相同的索引。
然后对文本EditText
进行子串
然后再次设置为EditText
。像这样的东西:
int pos = editText.getSelectionStart();
String myText = editText.getText().toString();
//sub-string it.
String subStringed = myText.substring(pos, myText.length());
//set it again..
editText.setText(subStringed);
答案 1 :(得分:0)
以下答案可能对您有所帮助。它对我来说非常适合
在EditText
光标
int start = edtPhoneNo.getSelectionStart(); //this is to get the cursor position
String s="sagar";//s="0123456789";
edtPhoneNo.getText().insert(start, s);
//this is to set the cursor position by +1 after inserting char/text
edtPhoneNo.setSelection(start + 1);
删除EditText
光标
int curPostion = edtPhoneNo.getSelectionEnd();
SpannableStringBuilder selectedStr = new
SpannableStringBuilder(edtPhoneNo.getText());
selectedStr.replace(curPostion - 1, curPostion, "");
edtPhoneNo.setText(selectedStr);
//this is to set the cursor position by -1 after deleting char/text
edtPhoneNo.setSelection(curPostion - 1);
将EditText
光标设置在最后位置
edtPhoneNo.setSelection(edtPhoneNo.getText().length());
这是EditText
<EditText
android:id="@+id/edtPhoneNumber"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:focusable="true"
android:focusableInTouchMode="true"
android:maxLines="1" />