Android自定义xml可绘制颜色不可见

时间:2015-08-12 09:29:15

标签: android xml android-layout android-drawable android-styles

我已经制作了两个自定义xml drawable的形状线,如下所示:

  1. 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. 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。如果有任何不明确的地方,请在评论中提出。

1 个答案:

答案 0 :(得分:0)

可能正在使用其他财产:

android:state_active
android:state_focused
...

http://developer.android.com/intl/es/reference/android/graphics/drawable/StateListDrawable.html