2009-05-26 27 views

Trả lời

2

Bạn có thể triển khai một TextChangedListener nơi bạn đảm bảo rằng các phần của văn bản của bạn sẽ không nhận được deleted/overwritten.

class TextChangedListener implements TextWatcher { 
    public void afterTextChanged(Editable s) { 
       makeSureNothingIsDeleted(); 
    } 

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

    public void onTextChanged(CharSequence s, int start, int before, int count) {} 
} 

TextChangedListener tcl = new TextChangedListener(); 
    my_editable.addTextChangedListener(tcl); 
16

Bạn có thể sử dụng

editText.setFocusable(false);

hoặc

editText.setEnabled(false);

mặc dù vô hiệu hóa EditText hiện tại không bỏ qua đầu vào từ bàn phím trên màn hình (Tôi nghĩ đó là một lỗi).

Tùy thuộc vào ứng dụng nó có thể là tốt hơn để sử dụng một InputFilter mà từ chối tất cả thay đổi:

editText.setFilters(new InputFilter[] { 
    new InputFilter() { 
     public CharSequence filter(CharSequence src, int start, 
      int end, Spanned dst, int dstart, int dend) { 
      return src.length() < 1 ? dst.subSequence(dstart, dend) : ""; 
     } 
    } 
});

Xem thêm this câu hỏi.

+2

Để hiển thị/ẩn trường mật khẩu, nội dung văn bản sẽ bị xóa nếu bạn sử dụng thủ thuật này và sau đó thay đổi loại đầu vào ('editText.setInputType (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)'). Giải pháp tạm thời là tạm thời đặt các bộ lọc thành mảng trống trong khi bạn thay đổi loại đầu vào. –

+0

@david thx, rất hay để biết –

+1

@Josef +1 cho câu trả lời hay –

Các vấn đề liên quan