选择器继承

时间:2011-12-01 14:52:08

标签: android selector state

有没有办法从Android中已知的selector继承?

我想扩展一个EditText并添加一个自定义状态,到目前为止,我理解使用onCreateDrawableState()方法进行操作。当一个选择器进入游戏时,是否有一种简单的方法可以使用默认选择器并添加我的而不是再次定义它们?

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.my.package">

<item android:state_enabled="false" android:drawable="@drawable/login_textfield_bg_error" />
<item android:state_window_focused="false" android:drawable="@drawable/login_textfield_bg_error">
<item android:state_pressed="true" android:drawable="@drawable/login_textfield_bg_error" />
<item android:state_selected="true" android:drawable="@drawable/login_textfield_bg_error" />
<item app:errorBackground="@drawable/login_textfield_bg_error" />
</selector>

1 个答案:

答案 0 :(得分:4)

我可能会误解,但也许你可以简单地委托给他们?

因此,在您的情况下,您具有自定义状态,因此,如果仅定义自定义状态适用的情况,则不能执行此操作:

<selector xmlns:android="..." xmlns:app="...">
  <item app:custom_state="true" android:drawable="@drawable/the_one_care_about"/>
  <item android:drawable="@android:drawable/editbox_background"/>
</selector>

所以这基本上说明,对于我的自定义状态为true的状态,显示我的自定义背景...但是对于所有其他状态,行为与此选择器相同。这个选择器碰巧有其他状态的指令,所以也按照它们。所以没有重新定义,因为状态是按照从上到下的顺序进行评估,你在技术上不必重新定义任何东西,你只是说明你只想定义一个状态的子集并委托给另一个drawable(碰巧所有其他内容的另一个选择器。这有帮助吗?