2009-05-26 53 views

回答

2

您可以實現一個TextChangedListener,您可以確保文本的這些部分不會得到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

你可以使用

editText.setFocusable(false);

editText.setEnabled(false);

雖然禁用EditText當前不忽略屏幕上的鍵盤輸入(我認爲這是一個bug)。

根據應用的不同,可能是更好的使用InputFilter是拒絕所有的變化:

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

另見this問題。

+2

對於顯示/隱藏密碼字段,如果使用此技巧,然後更改輸入類型(`editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)`),則會清除文本內容。解決方法是在更改輸入類型時臨時將篩選器設置爲空數組。 – 2010-11-11 09:28:00

相關問題