2012-08-10 19 views
5

मैं जानना चाहता हूँ क्या कोई तरीका है जिसके द्वारा मैं EditText से विशिष्ट चरित्र को दूर कर सकते हैं। मैं पाठ संपादन में स्थिति निर्दिष्ट करके EditText से चार्टर निकालना चाहते हैं वहाँ EditText के लिए removeAt() की तरह कुछ है?edittext से चरित्र को कैसे हटाया जाए?

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final Button b1=(Button)findViewById(R.id.button1); 
     final EditText ed1=(EditText)findViewById(R.id.editText1); 
     b1.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 

      //i want something like this 
        ed1.removeAt(5); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 


} 

अतिरिक्त जानकारी

मुख्य समस्या मैं पाठ को बोल्ड अंदर edittext लेकिन सभी पाठ बनाना चाहते है। बोल्ड बटन सेट करने के बाद टाइप किया गया टेक्स्ट (बोल्ड मेरा टॉगल बटन है)। यहाँ ठीक

 ed1.setOnKeyListener(new OnKeyListener() { 

     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      // TODO Auto-generated method stub 
      int i = 0; 

      switch(event.getAction()) 
      { 
      case KeyEvent.ACTION_UP: 
        if(bold.isChecked()) 
        { 
         i=ed1.getSelectionStart(); 

         ed1.append(Html.fromHtml("<b>"+ed1.getText().toString().charAt(i-1)+"</b>")); 

        } 
        return true; 

      } 
      return false; 
     } 
    }); 

समस्या मैं डबल चरित्र की एक सामान्य चरित्र और उसके बाद फिर बोल्ड एक है मिलता है कि कोड है तो मैं वहाँ स्थिति निर्दिष्ट करके कि सामान्य वर्णों निकालना चाहते

+0

यह मदद कर सकता है: http://stackoverflow.com/questions/7661104/insert-character-between-the-cursor-position-in-edit-text – 0gravity

उत्तर

7

आप पहली बार क्योंकि gettext संपादन योग्य रिटर्न स्ट्रिंग के लिए इसे बदलने के लिए है, जैसे:

int charIndex; 
String text = ed1.getText().toString(); 
text = text.substring(0, charIndex) + text.substring(charIndex+1); 
ed1.setText(text); 

एक चरित्र को हटाने और बोल्ड वर्ण एक ही रखने के लिए:

ed1.setText((Spanned)ed1.getText().delete(indexStart , indexEnd)); 

यह वर्ण निकाल देंगे इंडेक्स "इंडेक्स स्टार्ट" से "इंडेक्सइंड -1" तक। उदा। यदि आप हटाएं (0,1) का उपयोग करते हैं; यह पहला चरित्र हटा देगा।

मुझे आशा है कि मदद करता है :)

+0

नज़र क्यों मैं संपादित पाठ डेटा स्ट्रिंग http में नहीं ले जा सकते: // stackoverflow .com/प्रश्न/11905850/quetion जारी रखने के – maddygoround

+0

@RathoreSunny इस चाल करना चाहिए! –

1

EditText बस है किसी अन्य TextView की तरह, लेकिन इसे भी संपादित किया जा सकता है। इसलिए आप, getText() विधि का उपयोग कर सकते हैं एक String के रूप में संग्रहीत, वांछित चार हटाने, और EditText पर setText(str) विधि कॉल पाठ बदलने के लिए।

+0

http: // इस पोस्ट अगर मैं स्ट्रिंग बोल्ड प्रभाव है कि खो जाएगा में मेरी संपादित पाठ डेटा ले पर stackoverflow.com/questions/11905850/quetion-continue – maddygoround

0

एक स्ट्रिंग में EditText से इनपुट और दुकान प्राप्त करें।

String temp = ed1.getText().toString(); 

अब वांछित स्थिति में चरित्र को हटाने के लिए इस स्ट्रिंग अस्थाई में हेरफेर करें। (मेरा सुझाव है कि आप इसे प्राप्त करने के लिए String.substring(..) फ़ंक्शन का उपयोग करें।)

अंत में, संपादन टेक्स्ट में हेरफेर स्ट्रिंग अस्थायी सेट करें।

ed1.setText(temp); 
2

मेरा कार्यान्वयन नीचे दिया गया है। मुझे आशा है कि यह उपयोगी होगा

int cursorPosition = mDialerEditText.getSelectionStart(); 
    if (cursorPosition > 0) { 
      mDialerEditText.setText(mDialerEditText.getText().delete(cursorPosition - 1, cursorPosition)); 
     mDialerEditText.setSelection(cursorPosition-1); 
    } 
संबंधित मुद्दे