Mic*_*hal 38 android android-layout
我想做一件简单的事情:定义一个drawable,它与系统状态按下的背景颜色具有非常相似的背景颜色.我在res/drawables/my_drawable.xml中这样做:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true">
<color android:color="?android:attr/colorPressedHighlight"/>
</item>
<item android:state_selected="false">
<color android:color="@color/section_list_background"/>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
我总是得到:
java.lang.UnsupportedOperationException: Cant convert to color: type=0x2
Run Code Online (Sandbox Code Playgroud)
有线索吗?
问候
pet*_*syn 53
您可能需要执行以下操作来解决问题:
1)为颜色文件中的每个主题定义2种颜色:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="my_color_dark">#ff33B5E5</color>
<color name="my_color_light">#ff355689</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
2)使用内容创建文件res/values/attrs.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="my_color" format="reference" />
</resources>
Run Code Online (Sandbox Code Playgroud)
3)假设在styles.xml(Theme.dark
和Theme.light
)中有2个主题定义:
<style name="Theme.dark" parent="@style/Theme.Sherlock">
<item name="my_color">@color/my_color_dark</item>
</style>
<style name="Theme.light" parent="@style/Theme.Sherlock.Light">
<item name="my_color">@color/my_color_light</item>
</style>
Run Code Online (Sandbox Code Playgroud)
4)使用drawable中的颜色:
<color android:color="?attr/my_color"/>
Run Code Online (Sandbox Code Playgroud)
希望这可以解决你的问题.
只需在其中创建一个新的color.xml文件,/res/values/color.xml
并在其中放入如下代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="editcolor">#ff99ffff</color>
<color name="transparent">#00000000</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
您正在尝试将属性转换为颜色。属性是通常附加到视图的属性,然后可以使用主题设置样式。
您需要在 xml 中引用颜色资源。您可以通过创建自己的资源来实现:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPressedHighlight">#FF8800</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后像这样引用它:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true">
<color android:color="@color/colorPressedHighlight"/>
</item>
<item android:state_selected="false">
<color android:color="@color/section_list_background"/>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
或者您可以参考 Android 资源中可用的颜色:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true">
<color android:color="@android:color/holo_orange_light"/>
</item>
<item android:state_selected="false">
<color android:color="@android:color/holo_blue_dark"/>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56257 次 |
最近记录: |