Android EditText,获取所有状态

标签 android android-edittext android-drawable android-selector

我有一个简单的 XML 可绘制 happy_borders.xml,它将作为某些 EditText 的背景。

        <EditText
            android:background="@drawable/happy_borders

当然这是行不通的,因为在许多/大多数设备上,它会聚焦第一个设备,然后你就得不到任何背景

所以你做这样的事情...文件 happy_states.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_states.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true"
        android:drawable="@drawable/happy_borders" />
    <item
        android:state_focused="true"
        android:drawable="@drawable/happy_borders" />
    <item
        android:state_enabled="true"
        android:drawable="@drawable/happy_borders" />
</selector>

然后

        <EditText
            android:background="@drawable/happy_states

没问题,但是

(1) 实际上有一个巨大的 android:state_ ... 列表 - 这是怎么回事?在选择器中,有没有一种方法可以暗示“对每个状态都执行此操作”??

(2) 交替。在 EditText 内。你能说它是“无状态的”并且永远不会关心状态吗?即,只使用一种背景?

请注意,在许多情况下,我认为,在 EditText 后面放置一个单独的 View 是更好的工程;但无论如何我想知道如何实现上面的(1)或(2)。

最佳答案

只需定义需要不同可绘制对象的状态,然后在末尾添加默认状态:

<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_states.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true"
        android:drawable="@drawable/happy_borders" />
    <item
        android:drawable="@drawable/sad_borders" />
</selector>

编辑: 抱歉,没有完全回答您的问题:

1) 如果您没有定义任何非默认状态,则默认状态为“对每个状态执行此操作”。

2)我相信不会,解决方案可能是将背景设置为null或特定的drawable

要明确这一点:

<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_states.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/default_borders" />
</selector>

这就是“无状态”所需要的一切;让每个状态都相同。

关于Android EditText,获取所有状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41126772/

相关文章:

android - RSS 阅读器没有得到完整的描述

android - 使 EditText 接受并显示 HTML 格式的文本

android - 使用字体和字符串作为 Drawable

android - 查看 setBackground 与 drawable 删除海拔的阴影

android - SeekBar 从代码中设置线宽和颜色

Android:Facebook 登录不起作用

android - 如何从 Parse 推送通知记录推送打开

android - 在android中使用cursorLoader按升序显示联系人姓名

android - 如何在 EditText 中用逗号分隔数字

Android EditText 强制数字键盘但允许非数字字符