点击复选框禁用EditText后,如何将其文本恢复为灰色状态?
解决EditText禁用后仍呈粉色(焦点残留)的问题
嘿,我之前也踩过这个坑!你遇到的粉色其实是EditText的焦点高亮状态——虽然你禁用了输入框,但焦点还没从它身上移走,所以系统依然会显示活跃输入时的粉色样式。
你现在的代码只做了禁用和取消可聚焦,但漏掉了最关键的一步:主动清除焦点!给你调整后的代码,亲测有效:
if (mAnonymousCheckBox.isChecked()) { // 核心:先移除输入框的焦点,立刻消除粉色高亮 usernameEditText.clearFocus(); // 可选:确保光标完全隐藏(禁用后理论上会消失,但加上更稳妥) usernameEditText.setCursorVisible(false); // 原来的禁用逻辑保留 usernameEditText.setFocusable(false); usernameEditText.setEnabled(false); // 清空账号密码 setFTPUsername(""); setFTPPassword(""); } else { // 别忘了取消勾选时恢复输入框的所有状态哦 usernameEditText.setFocusable(true); usernameEditText.setFocusableInTouchMode(true); usernameEditText.setEnabled(true); usernameEditText.setCursorVisible(true); }
补充说明:
clearFocus()是解决问题的核心,它会让系统把焦点从EditText上移除,粉色高亮自然就消失了- 如果你想让禁用状态的视觉效果更明显,还可以额外设置
usernameEditText.setAlpha(0.6f)让输入框变灰,或者用setBackgroundColor()调整背景色,不过这属于锦上添花的操作了
内容的提问来源于stack exchange,提问作者beastlyCoder
相关产品推荐
相关产品推荐

