2012-08-10 9 views
5

Chcę wiedzieć, czy istnieje metoda, dzięki której mogę usunąć konkretny znak z EditText. Chcę usunąć kartę z numeru EditText, określając pozycję w tekście edycji Czy jest coś takiego, jak removeAt() dla EditText?Jak usunąć znak z editekstu?

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; 
    } 


} 

INFORMACJE DODATKOWE

głównym problemem jest to, że chcesz, aby tekst pogrubiony wewnątrz EditText ale nie cały tekst. Tekst wpisany po włożeniu pogrubionego przycisku (pogrubienie to mój przycisk przełączania). ok oto kod

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

problemem jest to, że mogę dostać jeden podwójny charakter jest normalny znak, a następnie ponownie śmiały jeden tak chcę usunąć to normalne znaki, określając w niej pozycję

+0

To może pomóc: http://stackoverflow.com/questions/7661104/insert-character-between-the-cursor-position-in-edit-text – 0gravity

Odpowiedz

7

Musisz zmienić go na ciąg pierwsze dlatego getText wraca do edycji, np:

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

Aby usunąć znak i zachować pogrubioną czcionką samo:

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

To usunie znaki od indeksu "indexStart" do "indexEnd -1". np. jeśli używasz delete (0,1); usunie pierwszą postać.

Mam nadzieję, że pomoże :)

+0

Spójrz na ten post, jeśli wezmę moje dane edycji tekstu do łańcucha, pogrubiony efekt zostanie utracony, dlatego nie mogę pobrać danych edycji tekstu do łańcucha http: // stackoverflow .pl/questions/11905850/quetion-continue – maddygoround

+0

@RathoreSunny To powinno wystarczyć! –

1

EditText jest po prostu jak każdy inny TextView, ale można go również edytować. Dlatego możesz użyć metody getText(), zapisać ją jako String, usunąć żądany znak i wywołać metodę setText(str) na EditText, aby zmienić tekst.

+0

http: // stackoverflow.com/questions/11905850/quetion-continue – maddygoround

0

Pobierz dane z EditText i zapisz w ciągu znaków.

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

Teraz zmień wartość tego ciągu znaków, aby usunąć znak z żądanej pozycji. (Proponuję użyć funkcji String.substring(..), aby to osiągnąć.)

Na koniec ustaw manipulated string temp w EditText.

ed1.setText(temp); 
2

Moje wdrożenie podano poniżej. Mam nadzieję, że będzie to pomocne

int cursorPosition = mDialerEditText.getSelectionStart(); 
    if (cursorPosition > 0) { 
      mDialerEditText.setText(mDialerEditText.getText().delete(cursorPosition - 1, cursorPosition)); 
     mDialerEditText.setSelection(cursorPosition-1); 
    } 
Powiązane problemy