2011-10-05 16 views
6

मेरे कोड है:सम्मिलित चरित्र

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(); 

        } 

मैं एक डायलपैड भी है .. जब मैं डायल पैड में एक विशेष संख्या पर क्लिक करें, मैं वर्तमान को उस नंबर जोड़ने की जरूरत कर्सर स्थिति .... भी .. जब मैं भी हटा दबाते हैं, तो मैं वर्तमान कर्सर स्थिति से संख्या को हटाने की आवश्यकता ... Pls मदद

डायलपैड छवि

enter image description here

उत्तर

23

निम्नलिखित कोड

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 

यहाँ है अपने वास्तविक जा रहा है 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

@Aju वास्तव में हटाना हिस्सा एक हैक है जो काम नहीं करेगा हमेशा की तरह, यदि आपके पास टेक्स्ट है: "हैलो हैलो हैलो" और आप केवल 'हैलो' को मिटाना चाहते हैं, तो यह काम नहीं करेगा। –

1

आपको अपने बटन के लिए OnClickListener लागू करने की आवश्यकता है। वहां के अंदर आपको संपादक के पाठ को अपडेट करने की आवश्यकता है। '5' बटन के लिए उदाहरण के लिए:

public void onClick(View v) { 

    String currentText = edt.getText(); 
    edt.setText(currentText + "5"); 
} 
+0

मैं संपादक के पाठ को कैसे अपडेट करता हूं। – jennifer

+0

'एडिटटेक्स्ट' वर्ग – Caner

+0

में 'getText()' और 'setText() 'है, इसके लिए आप' edt.append ("5") 'का उपयोग करेंगे। –

0
editText.getText().insert(editText.getSelectionStart(), text); 

पाठ चयनित पाठ को हटाने के लिए कोड का प्रयास करें स्ट्रिंग जिसे आप सम्मिलित करना चाहते हैं।

1

सम्मिलित करने के लिए:

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 

निकालने के लिए:

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

धन्यवाद। आपकी निकासी विधि ने मेरी मदद की! –

1
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) { 
     } 
    }); 

आप कोशिश कर सकते हैं यह

0

मैं वर्तमान में इस समाधान का उपयोग:

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

    } 
} 
संबंधित मुद्दे