2012-08-10 40 views
5

Tôi muốn biết là có phương pháp nào để tôi có thể xóa ký tự cụ thể khỏi số EditText. Tôi muốn xóa điều lệ khỏi EditText bằng cách chỉ định vị trí trong văn bản chỉnh sửa có điều gì đó như removeAt() cho EditText không?cách xóa ký tự khỏi 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; 
    } 


} 

THÔNG TIN EXTRA

vấn đề chính là tôi muốn làm cho văn bản đậm EditText bên trong nhưng không phải tất cả các văn bản. Các văn bản được gõ sau khi thiết lập nút đậm trên (in đậm là nút chuyển đổi của tôi). ok đây là mã

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

vấn đề là tôi nhận được một đôi nhân vật là nhân vật bình thường và sau đó một lần nữa là người táo bạo vì vậy tôi muốn loại bỏ rằng các nhân vật bình thường bằng cách xác định vị trí có

+0

này có thể giúp: http://stackoverflow.com/questions/7661104/insert-character-between-the-cursor-position-in-edit-text – 0gravity

Trả lời

7

Bạn cần phải thay đổi nó thành chuỗi đầu tiên vì gettext trả về có thể chỉnh sửa, ví dụ:

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

Để loại bỏ một nhân vật và giữ cho các nhân vật BOLD giống nhau:

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

này sẽ loại bỏ các nhân vật từ index "indexStart" đến "indexEnd -1". ví dụ: nếu bạn sử dụng xóa (0,1); nó sẽ xóa ký tự đầu tiên.

Tôi hy vọng điều đó sẽ giúp :)

+0

xem bài viết này nếu tôi lấy dữ liệu văn bản chỉnh sửa của tôi vào chuỗi hiệu ứng đậm sẽ bị mất đó là lý do tại sao tôi không thể lấy dữ liệu văn bản chỉnh sửa thành chuỗi http: // stackoverflow .com/questions/11905850/quetion-continue – maddygoround

+0

@RathoreSunny Điều này nên làm các trick! –

1

EditText chỉ là giống như bất kỳ TextView nào khác, nhưng cũng có thể chỉnh sửa được. Do đó, bạn có thể sử dụng phương thức getText(), lưu trữ dưới dạng String, xóa char mong muốn và gọi phương thức setText(str) trên EditText để thay đổi văn bản.

+0

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

0

Nhận dữ liệu nhập từ EditText và lưu trữ trong chuỗi.

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

Bây giờ, hãy điều chỉnh nhiệt độ Chuỗi này để xóa ký tự ở vị trí mong muốn. (Tôi đề nghị bạn sử dụng chức năng String.substring(..) để đạt được điều này.)

Cuối cùng, đặt nhiệt độ chuỗi thao tác trong EditText.

ed1.setText(temp); 
2

Thực hiện của tôi được đưa ra dưới đây. Tôi hy vọng nó sẽ rất hữu ích

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