ini adalah implementasi saya (agak panjang, tapi berguna bagi saya!): Dengan kode ini Anda dapat membuat EditView Read-only atau Normal. bahkan dalam keadaan read-only, teks dapat disalin oleh pengguna. Anda dapat mengubah latar belakang agar terlihat berbeda dari EditText biasa.
public static TextWatcher setReadOnly(final EditText edt, final boolean readOnlyState, TextWatcher remove) {
edt.setCursorVisible(!readOnlyState);
TextWatcher tw = null;
final String text = edt.getText().toString();
if (readOnlyState) {
tw = new TextWatcher();
@Override
public void afterTextChanged(Editable s) {
}
@Override
//saving the text before change
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
// and replace it with content if it is about to change
public void onTextChanged(CharSequence s, int start,int before, int count) {
edt.removeTextChangedListener(this);
edt.setText(text);
edt.addTextChangedListener(this);
}
};
edt.addTextChangedListener(tw);
return tw;
} else {
edt.removeTextChangedListener(remove);
return remove;
}
}
manfaat dari kode ini adalah, EditText ditampilkan sebagai EditText normal tetapi isinya tidak dapat diubah. Nilai yang dikembalikan harus disimpan sebagai variabel agar seseorang dapat kembali dari status hanya-baca ke normal.
untuk membuat EditText hanya-baca, cukup taruh sebagai:
TextWatcher tw = setReadOnly(editText, true, null);
dan untuk membuatnya normal gunakan tw dari pernyataan sebelumnya:
setReadOnly(editText, false, tw);