【发布时间】:2010-10-28 22:48:16
【问题描述】:
我正在使用EditText。是否可以在同一个EditText 中使部分文本不可编辑而其余部分可编辑?
【问题讨论】:
标签: java android android-edittext
我正在使用EditText。是否可以在同一个EditText 中使部分文本不可编辑而其余部分可编辑?
【问题讨论】:
标签: java android android-edittext
你可以使用
editText.setFocusable(false);
或
editText.setEnabled(false);
虽然禁用EditText 目前不会忽略来自屏幕键盘的输入(我认为这是一个错误)。
根据应用程序,最好使用拒绝所有更改的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 问题。
【讨论】:
editText.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD)),则会清除文本内容。解决方法是在更改输入类型时将过滤器临时设置为空数组。
您可以实现一个 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);
【讨论】: