直接嵌入和使用@ simple之间有所不同

时间:2017-07-28 09:26:21

标签: android

我正在尝试创建一个按钮样式,其中包括自定义背景和按下的背景更改响应。我是通过使用和drawable完成的。

风格

<style name="BoltButton" parent="android:style/Widget.Button">
    <item name="android:background">@drawable/gree_btn_background</item>
    <item name="android:paddingTop">10dp</item>
    <item name="android:paddingBottom">10dp</item>
</style>

/drawable/gree_btn_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/btn_pressed"/>
    <item android:state_focused="true" android:drawable="@color/btn_focuse"/>
    <item android:drawable="@color/btn_green"/>
</selector>

以上设置有效,然后我尝试删除可绘制文件并尝试将其直接放在<item name="android:background"></item>下,出现错误,那么使用@和直接使用它有什么不同?为什么上述情况不起作用?

以下代码不起作用

<item name="android:background">
      <selector >
        <item android:state_pressed="true" android:drawable="@color/bolt_btn_pressed"/>
        <item android:state_focused="true" android:drawable="@color/bolt_btn_focuse"/>
        <item android:drawable="@color/bolt_btn_green"/>
      </selector>
</item>

1 个答案:

答案 0 :(得分:2)

<item name="android:background"></item>在其中,它期望可绘制的ID,而不是<selector>

因此我们应该提供您之前提供的可绘制ID <item name="android:background">@drawable/gree_btn_background</item>