Android EditText,获取所有状态
Android EditText, getting ALL the states
我有一个普通的 XML 可绘制对象 happy_borders.xml,它将作为某些 EditText 的背景。
<EditText
android:background="@drawable/happy_borders
当然这行不通,因为在 many/most 设备上它会 focus 第一个,然后你什么也得不到,因为背景.
所以你做这样的事情...文件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
中有没有办法暗示"do this for every state"??
(2) 交替。在 EditText 中。你能告诉它是 "stateless" 并且从不,永远不关心状态吗?即,永远只使用一个背景?
请注意,在很多情况下,我认为在 EditText 后面放置一个单独的视图会更好;但无论如何我想知道如何实现上面的 (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) 如果您没有定义任何非默认状态,则默认状态为 "do this for every state".
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>
是所有需要的,有"no states";让每个州都一样。
我有一个普通的 XML 可绘制对象 happy_borders.xml,它将作为某些 EditText 的背景。
<EditText
android:background="@drawable/happy_borders
当然这行不通,因为在 many/most 设备上它会 focus 第一个,然后你什么也得不到,因为背景.
所以你做这样的事情...文件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
中有没有办法暗示"do this for every state"??
(2) 交替。在 EditText 中。你能告诉它是 "stateless" 并且从不,永远不关心状态吗?即,永远只使用一个背景?
请注意,在很多情况下,我认为在 EditText 后面放置一个单独的视图会更好;但无论如何我想知道如何实现上面的 (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) 如果您没有定义任何非默认状态,则默认状态为 "do this for every state".
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>
是所有需要的,有"no states";让每个州都一样。