我有一个简单的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)。
答案 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 ;;每个州都一样。