Insert character between cursor position in edit text

My code is:

EditText edt edt.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable arg0) { final String number = edt.getText().toString(); int count = arg0.length(); edt.setSelection(count); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { final String number = edt.getText().toString(); } 

I also have dialpad .. When I click on a specific number in the dial pad, I need to add this number to the current cursor position .... also .. when I press delete also, I need to remove the number from the current cursor position .. Pls Help

Taskbar Image

enter image description here

+6
source share
6 answers

Try using the following code

 int start =editText.getSelectionStart(); //this is to get the the cursor position String s = "Some string"; editText.getText().insert(start, s); //this will get the text and insert the String s into the current position 

Here is the code to remove selected text from EditText

 int start = t1.getSelectionStart(); //getting cursor starting position int end = t1.getSelectionEnd(); //getting cursor ending position String selectedStr = t1.getText().toString().substring(start, end); //getting the selected Text t1.setText(t1.getText().toString().replace(selectedStr, "")); //replacing the selected text with empty String and setting it to EditText 
+23
source

You need to implement OnClickListener for your buttons. Inside you must update the editor text. For example, for button "5":

 public void onClick(View v) { String currentText = edt.getText(); edt.setText(currentText + "5"); } 
+1
source

Paste:

  String dialled_nos = dialpad_text.getText().toString(); String number = view.getTag().toString(); // 1,2....9,0 int start = dialpad_text.getSelectionStart(); dialled_nos = new StringBuilder(dialled_nos).insert(start, number).toString(); dialpad_text.setText(dialled_nos); dialpad_text.setSelection(start+1); // cursor will move to new position 

To delete:

  String dialled_nos = dialpad_text.getText().toString(); int remove_index_position = dialpad_text.getSelectionStart()-1; StringBuilder dialled_nos_builder = new StringBuilder(dialled_nos); if(remove_index_position>=0) { dialled_nos_builder.deleteCharAt(remove_index_position); dialpad_text.setText(dialled_nos_builder.toString()); dialpad_text.setSelection(remove_index_position); } 
+1
source
 etPnr.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) { etPnr.removeTextChangedListener(this); // TODO: If you want to do on the text, apply here if (start + count > etPnr.length()) etPnr.setSelection(etPnr.length()); else etPnr.setSelection(start + count); etPnr.addTextChangedListener(this); } @Override public void afterTextChanged(Editable s) { } }); 

You may try

+1
source
 editText.getText().insert(editText.getSelectionStart(), text); 

text is your actual line you want to insert.

0
source

I am currently using this solution:

 public static void insertText(String text, EditText editText) { int start = Math.max(editText.getSelectionStart(), 0); int end = Math.max(editText.getSelectionEnd(), 0); editText.getText().replace(Math.min(start, end), Math.max(start, end), text, 0, text.length()); try { editText.setSelection(start + 1); } catch (final IndexOutOfBoundsException e) { } } 
0
source

Source: https://habr.com/ru/post/898666/


All Articles