java - 如何禁用 EditText 并保持背景颜色为白色?

标签 java android android-edittext background-color

当我使用 setEnabled(false) 或通过 xml 文件 android:enabled="false" 禁用 EditText 时,背景颜色将为灰色:

enter image description here

如果我将背景更改为白色 android:background="@color/white",我将失去边框:

enter image description here

所以我的问题是,如何禁用 EditText(我不希望在长按它时弹出任何对话框)并保持边框不变?

最佳答案

最好的办法是创建自己的状态列表可绘制对象,并将禁用背景指定为与启用状态相同。您需要创建自己的 9-Patch 镜像,或者您也可以从 Android 开源中提取资源文件。

http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

这是我用于 EditText 背景的示例:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--  Active tab -->
    <item android:state_focused="true"
          android:drawable="@drawable/edittext_bg_selected" />
    <!--  Inactive tab -->
    <item android:state_focused="false"
          android:drawable="@drawable/edittext_bg_unselected" />

    <item android:state_enabled="false"
          android:drawable="@drawable/edittext_bg_unselected" />

    <!-- Add all of your other states -->
</selector>

您只需要弄乱不同的状态即可创建适合您的状态。

关于java - 如何禁用 EditText 并保持背景颜色为白色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367045/

相关文章:

android - 以编程方式关闭 ActionBar Spinner 或避免打开它

android - 本地通知的ID是否需要全局唯一?

java - 为组创建具有写权限的目录

java - Java中单个字符大写

java - 这种违反单一责任原则的行为有什么好处

android - 如何在android中创建时间轴组件

android - 如何使用 libgdx 创建 Android UI 元素

android - Kotlin:Android EditText Left Drawable的Click事件

android - 在 EditText 中快速滚动

java - 以编程方式运行 Spring Batch Job?