Android EditText,获取所有状态

时间:2016-12-13 17:08:33

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

我有一个简单的XML drawable 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_ ...列表 - 那里有什么交易?在selector中有没有办法暗示“为每个州做这件事”??

(2)交替。在EditText里面。你能说它是“无国籍的”,永远不会关注国家吗?即,只使用一个背景?

请注意,在很多情况下,我认为只需在EditText后面放置一个单独的视图就可以了。但无论如何我想知道如何实现上述(1)或(2)。

1 个答案:

答案 0 :(得分:2)

只需定义需要不同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:state_pressed="true"
        android:drawable="@drawable/happy_borders" />
    <item
        android:drawable="@drawable/sad_borders" />
</selector>

修改 对不起,没有回答你的问题:

1)如果你没有定义任何非默认状态,那么默认状态是&#34;为每个状态执行此操作&#34;。

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>

是所有需要的,没有状态&#34 ;;每个州都一样。