Insert character between the cursor position in edit text

后端 未结 6 2074
我寻月下人不归
我寻月下人不归 2020-12-15 12:07

My code is :

EditText edt

    edt.addTextChangedListener(new TextWatcher() {

            @Override
            public void afterTextChanged(Editable arg0)         


        
相关标签:
6条回答
  • 2020-12-15 12:22

    I currently use 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 讨论(0)
  • Try 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 delete 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
    
    0 讨论(0)
  • 2020-12-15 12:36

    You need to implement OnClickListener for your buttons. Inside there you need to update the text of the editor. For example for '5' button:

    public void onClick(View v) {
    
        String currentText = edt.getText();
        edt.setText(currentText + "5");
    }
    
    0 讨论(0)
  • 2020-12-15 12:37

    To insert:

        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 remove:

        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);
        }
    
    0 讨论(0)
  • 2020-12-15 12:38
    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 can try it

    0 讨论(0)
  • 2020-12-15 12:43
    editText.getText().insert(editText.getSelectionStart(), text);
    

    text being your actual string that you are looking to insert.

    0 讨论(0)
提交回复
热议问题