选择器:“<item>标记需要一个‘drawable’属性”

3

我有一个按钮:

<Button
            android:id="@+id/searchCompaniesButton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"          
            android:drawableLeft="@drawable/company_icon"
            android:drawablePadding="10dp"
            android:drawableRight="@drawable/next_icon_big"
            android:gravity="left|center_vertical"
            android:paddingLeft="10dp"
            android:backgroud="@drawable/transparent_button_selector"
            android:paddingRight="10dp"
            android:text="@string/searchCompanies" />

transparent_button_selector 是在 /drawable-ldpi 文件夹中的 transparent_button_selector.xml:

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/lightGrey"
          android:state_pressed="true" />
    <item android:drawable="@color/veryLightGrey"
          android:state_focused="true" />
    <item android:drawable="@null" />
</selector>

此外,我还有一个 colors.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
 <color name="lightGrey">#3d3d3d</color>
  <color name="veryLightGrey">#4d4d4d</color>
</resources>

但是当我运行我的应用程序时,日志会显示:
“'item'标记需要一个'drawable'属性”
这是怎么回事?我知道有一些类似的问题,但答案都不太有用。我尝试了:
重新启动Eclipse 清理项目
在真实设备上运行应用程序(崩溃)

1
尝试使用透明颜色而不是空值。 - undefined
为什么不直接删除那个空项目? - undefined
4个回答

15

替换这个:

 <item android:drawable="@null" />

与:

<item android:drawable="@color/transparent" />

并且在您的颜色文件中添加透明颜色,使用代码:#00000000


1
<item android:drawable="@android:color/transparent" /> - undefined

0

drawable属性始终采用@drawable,即 您需要替换

<item android:drawable="@color/..."
      android:state_pressed="true" />

使用

<item android:drawable="@drawable/..."
      android:state_pressed="true" />

使用这个,
<item
    android:state_pressed="true"
    android:drawable="@drawable/selected_state" />

在drawable文件夹中创建一个名为"selected_state"的形状如下。
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle">
       <solid android:color="@color/lightGrey" />
</shape>

0
你的android:background属性拼写错误: android:backgroud="@drawable/transparent_button_selector" 在'background'中缺少了字母'n'。

0
如果使用选择器来显示列表中当前已选择的项目,则最佳答案非常简单:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/activated_color"  android:state_activated="true"/>
</selector>

选定的项目由视图的isActivated状态确定。

为什么透明背景比更直接的“无背景”声明更好?


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