如何使用 Holo 主题更改 Android 中按钮的背景颜色?
在开发 Android 应用程序时,我遇到了这个问题。使用 Android 3.0 Holo 主题时,我无法更改按钮的样式。
在我的 theme.xml 文件中是这样的:
<resources>
<style name="Test" parent="android:Theme.Holo">
</style>
</resources>
我的 manifest.xml 文件有这样的内容:
<application android:icon="@drawable/my_icon"
android:label="@string/app_name" android:debuggable="false" android:theme="@style/Test">
如果我此时运行应用程序,我会得到默认的 Holo 主题按钮。但我想改变它们的颜色。这似乎是一个透明度问题,但我不知道该去哪里寻找。
我尝试过创建自定义按钮样式。像这样简单的事情:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@android:color/black" />
<item android:state_focused="true" android:color="@android:color/white" />
<item android:state_pressed="true" android:color="@android:color/white" />
<item android:color="#f8f8f8" />
</selector>
但这对我不起作用。我尝试过的每种组合都不起作用。
我知道它一定继承了一些使其透明的属性,但我不知道是哪一个。
任何帮助将不胜感激。
While working on an Android app, I came across this problem. I can't change the style of a button while using the Android 3.0 Holo Theme.
In my theme.xml file is this:
<resources>
<style name="Test" parent="android:Theme.Holo">
</style>
</resources>
My manifest.xml file has this:
<application android:icon="@drawable/my_icon"
android:label="@string/app_name" android:debuggable="false" android:theme="@style/Test">
If I run the app at this point, I get the default Holo themed buttons. But I want to change the color of them. It seems like it's a transparency issue, but I'm not sure where to look.
I've tried creating a custom button style. Something simple like this:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@android:color/black" />
<item android:state_focused="true" android:color="@android:color/white" />
<item android:state_pressed="true" android:color="@android:color/white" />
<item android:color="#f8f8f8" />
</selector>
This doesn't work for me though. Every combination I've tried doesn't work.
I know that it must be inheriting some property that's making it transparent, but I have no idea which one.
Any help would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试使用 android:drawable 而不是 android:color。
例如
Try using android:drawable instead of android:color.
e.g.
由于按钮确实具有背景可绘制对象,因此您可以为该背景可绘制对象着色。必须注意的是,此背景是半透明的,因此色调不会 100%。不过,这在 Holot 黑暗主题上看起来相当不错。
操作方法如下:
尝试使用矩阵进行试验,因为它可以产生不同的结果。另外,您可以简单地使用 LightingColorFilter 来代替 ColorMatrixColorFilter,它更容易处理,但不那么灵活。
Since a button does have a background drawable you can tint this background drawable. It has to be noted though that this background is semi transparent so the tint will not bee 100%. This looks pretty nice on the Holot dark theme though.
Here is how you do it:
Try experimenting with the matrix as it can yield different results. Also instead of the ColorMatrixColorFilter you could simply use the LightingColorFilter which is easier to handle but not as flexible.