标签需要 'drawable' 属性

2024-02-20

我正在尝试非常简单地设计一个Button。我只想在未按下时将其显示为带有文本的蓝色,而在单击时将其设置为带有蓝色文本的白色。

我尝试使用样式和选择器来做到这一点。

在我的布局中我有这个Button:

 <Button
    android:id="@+id/button1"
    style="@style/MyButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="@string/login" />

And in res/values/styles我有这个styles.xml:

<style name="MyButton">
    <item name="android:background">@drawable/btn_background</item>
    <item name="android:textColor">@drawable/btn_textcolor</item>
</style>

当然,两个选择器,在res/drawable, 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:color="@color/white" />
   <item android:color="@color/SapphireBlue" />
</selector>

and btn_textcolor.xml:

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

当我运行应用程序或打开布局编辑器时出现的错误是:

标签需要 'drawable' 属性

我明白这条消息,但我不明白have一个drawable,它是一个简单的、扁平的按钮。

如何创建这样一个简单的按钮?

Update根据这个帖子 https://stackoverflow.com/questions/4692642/android-customized-button-changing-text-color,它应该可以工作。


试试这个方法,希望这能帮助你解决你的问题。

btn_background.xml

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

btn_textcolor.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/SapphireBlue" android:state_pressed="true"></item>
<item android:color="@drawable/SapphireBlue" android:state_focused="true"></item>
<item android:color="@drawable/white" android:state_enabled="true" android:state_focused="false" android:state_pressed="false"></item>
<item android:color="@drawable/SapphireBlue" android:state_enabled="false"></item>
</selector>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

标签需要 'drawable' 属性 的相关文章

随机推荐

  • 在没有 Adob​​e Reader 的情况下将 pdf 文件显示到浏览器中

    我需要在没有 Adob e Reader 的情况下在浏览器中打开 pdf 文件 是否有 PHP 的 API 可以在浏览器中打开 PDF 文件 Regards No PHP 在服务器上运行 它可以访问的唯一 浏览器 API 是 HTTP 如果
  • 如何在非 root 运行的容器中安装新包?

    我需要在正在运行的容器中安装简单的包 例如curl 但我遇到了这个错误 apk add curl ERROR Unable to lock database Permission denied ERROR Failed to open ap
  • 将 System.out 和 System.err 重定向到 slf4j

    我需要重定向System out err println输出到 slf4j 我知道这不是正确进行日志记录的方法但有一个外部库 它记录到System out 您可以使用slf4j 上的系统输出 http projects lidalia or
  • 否定打字稿类型?

    我想在打字稿中创建一个简单的 NOT 运算符 您可以将所有基元组合到某种类型 A 的联合中 这些基元不是第二种类型 B 的联合的基元成员 这可以使用条件类型来完成 例如 如果您有类型 type A a b c type B c d e 然后
  • 如何从 ByteBuffer 获取短[]

    我在 Android 项目中使用 JNI 代码 其中 JNI 本机函数需要一个短 参数 但是 原始数据存储为 ByteBuffer 我正在尝试按如下方式转换数据格式 ByteBuffer rgbBuf ByteBuffer allocate
  • 同一库的多个版本

    我有项目 A 它曾经有模块 A1 使用 dagger v 1 2 2 现在我想添加到项目 A 模块 A2 它依赖于 dagger v 2 0 但我不能 因为这两个匕首库是冲突的 我可以在不同的 android 模块中以某种方式处理多个版本的
  • 使用 Ruby 正则表达式使用常规双引号转义 '“'

    我的文本包含这些奇特的双引号 我想使用 Ruby gsub 和正则表达式将它们替换为常规双引号 这是一个例子以及我到目前为止所拥有的 sentence This is a quote Hey guys I couldn t figure o
  • (Android Xamarin) 获取资源字符串值而不是 int

    我刚刚开始使用 VS2012 使用 Xamarin 创建一个简单的 Android 应用程序 我知道有一种类型的资源仅用于字符串 在我的资源文件夹中 我有一个如下所示的 xml 文件
  • 当启用面板向左滚动时,如何显示我的页面在左侧部分可见?

    IN this link http view jquerymobile com 1 3 2 dist demos widgets panels 我可以发现有一个覆盖选项 我可以在其中隐藏或显示右侧或左侧的面板 但我想在面板中显示面板 90
  • 在没有 .kv 文件的情况下使用屏幕管理器时出现一些问题

    我正在尝试使用 Pthon 和 kivy 制作应用程序 我正在研究其中的登录 注册部分 我试图为每个屏幕 登录和注册 创建一个屏幕 并将它们与 ScreenManager 连接 但没有 kv 文件 如果不可能 我想在 hte kv 文件中写
  • 如何在 emberjs 上使用单向绑定?

    我开始使用 ember 但我无法理解的一件事是如何使用单向绑定 请考虑以下代码 HTML JS var App Ember Application create Ap
  • 如何在 ASP.NET MVC 中获取其他用户的个人资料?

    我想在用户登录时设置带有时区的 cookie AccountController LogOn 似乎是执行此操作的最佳位置 但是 我还无法在那里读取用户的个人资料 因为我猜您只有在该方法完成时才能访问个人资料 因此 此代码返回一个空字符串 D
  • 如何使用pandas/python处理excel文件头

    我正在尝试阅读https www whatdotheyknow com request 193811 response 480664 attach 3 GCSE 20IGCSE 20results 20v3 xlsx https www w
  • C、C++ 和 Java 中的提升/重新排序:变量声明必须始终位于上下文的顶部吗?

    我读了一些关于提升和重新排序 https stackoverflow com questions 11430095 are hoisting and reordering the same thing 所以看来Java VM可能会选择提升一
  • 从 csv 文件中以嵌套字典格式分别计算男性和女性

    这段代码运行良好 并且以这种格式打印结果 我需要像这样的嵌套字典格式的结果 data year male Q1 1 Q2 1 Q3 1 Q4 1 female Q1 1 Q2 1 Q3 1 Q4 1 代码 import csv result
  • 自动调用常用初始化代码,无需创建__init__.py文件

    我的项目中有两个目录 project src scripts src 包含我精心编写的代码 scripts 包含一次性的 Python 脚本 我希望所有脚本都将 src 添加到其 sys path 中 以便它们可以访问 src 树下的模块
  • 如何使我的托管 NuGet 包支持 C++/CLI 项目?

    我制作了一个 NuGet 包 当我从 C 项目中使用它时 该包运行良好 它包含一个DLL在lib net40目录 并且 DLL 被添加为引用 现在 NuGet 支持 C 我如何实际修改我的包 以便可以将 DLL 添加为 C CLI 项目中的
  • 随机森林的可解释性

    我一直在使用sklearnRandomForestClassifier解决二元分类问题 对于特定的样本预测 我希望能够了解如何改变特征值来改变预测 例如 假设我有一个条目 size 15 width 8 height 13 该模型给了我一个
  • Google 地图上许多点的边界

    每个人 最近 我们遇到了谷歌地图边界的问题 我们收到了很多点 这些点是 new google maps LatLng lat lng 对象 然后 如何绘制或制作这个块的边界 或者如何找到边界上的点 LatLng 用于绘制多边形 有没有JS算
  • 标签需要 'drawable' 属性

    我正在尝试非常简单地设计一个Button 我只想在未按下时将其显示为带有文本的蓝色 而在单击时将其设置为带有蓝色文本的白色 我尝试使用样式和选择器来做到这一点 在我的布局中我有这个Button