选择器继承

9

有没有一种方法可以从Android中已知的选择器进行继承?

我想要扩展一个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个回答

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的状态,显示我的自定义背景...然而对于所有其他状态,行为与此选择器相同。这个选择器碰巧还有其他状态的说明,所以也要跟随它们。因此没有重新定义,由于状态按照从上到下的顺序进行评估,你实际上不需要重新定义任何东西,你只需要声明你想定义一个状态子集,并将所有其他内容委托给这个其他可绘制项(它恰好是另一个选择器)。这个解释有帮助吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接