我已经制作了两个自定义xml drawable的形状线,如下所示:
divider_line_ok.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<size
android:width="150dp"
android:height="1dp"></size>
<solid android:color="#000000"></solid>
</shape>
2的 divider_line_error.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<size
android:width="150dp"
android:height="3dp"></size>
<solid android:color="#ec0000"></solid>
</shape>
我在另一个基于属性 state_activated 的自定义可绘制 edittext_divider_line.xml 中使用这两个drawable:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/divider_line_error" android:state_activated="true"></item>
<item android:drawable="@drawable/divider_line_ok" />
</selector>
然后我们将这个drawable设置为背景,如下所示:
<style name="divider_line_style">
<item name="android:layout_width">match_parent</item>
<item name="android:background">@drawable/edittext_divider_line</item>
<item name="android:layout_height">wrap_content</item>
</style>
最后在ImageView中使用了这种风格:
<ImageView
android:id="@+id/xyz_divider"
style="@style/divider_line_style"
/>
因此,当我们为此imageView调用view.setActivated(true)
方法时,视图应根据 edittext_divider_line.xml 中定义的状态(即@drawable/divider_line_error
)进行更改。
当我将激活状态更改为true时,我可以看到视图的高度从1dp变为3dp但我看不到我在任何一个为两个状态设置的drawable中设置的颜色激活状态。
简而言之,任何可绘制的颜色都没有使用。只是高度变化。请帮我找到问题。
P.S。如果有任何不明确的地方,请在评论中提出。
答案 0 :(得分:0)
可能正在使用其他财产:
android:state_active
android:state_focused
...
http://developer.android.com/intl/es/reference/android/graphics/drawable/StateListDrawable.html