我的计算器应用包含 30个按钮。我想为计算器键盘提供主题。主题更改按钮背景(渐变,而不是图像背景)和字体。所有按钮的某些主题颜色相同,而有些主题颜色为数字,另一些颜色为运算符等等。
颜色变化使用来自res / drawable / * .xml
的选择器如何通过代码更改主题? 希望避免输入:
button.setBackground(Drawable background);
button.setTypeface(font);
30次。如果我有5个主题,那么30 * 5 * 2 = 300行代码!!
我是新手,如果没有别的办法,我会选择150行。
另外如何保存用户主题选择?使用偏好?
答案 0 :(得分:1)
您可以创建自定义XML主题,该主题将更改所有XML组件。创建新主题后,进入Android Manifest文件并更改主题。例如:
<activity
android:name="com.myapp.MyActivity"
...
android:theme="@style/MyCustomTheme" />
要创建主题,请转到res / values / themes.xml并使用标识符创建新主题:
<resources>
...
<style name="MyCustomTheme" parent="android:style/Theme">
<item name="android:textColorPrimary">#ffff0000</item>
</style>
...
</resources>
通过使用此方法,您可以创建一个包含不同主题的扩展库,并更改为您想要的主题。
注意:这不仅可以用于更改背景,还可以用于更改按钮的主题。访问该网站了解更多信息:
http://janrain.com/blog/introduction-to-android-theme-customization/
编辑:正如该用户所评论的那样,您可以在for()
循环中设置该功能来更改按钮的主题。
对于您的情况,我从上面的链接中得出了这个。它将改变XML文件中按钮的纹理,而不是Java。
“使用带按钮的自定义九个补丁
9-patch drawable是一种特殊的图像,可以在宽度和高度上进行缩放,同时保持其视觉完整性。虽然可以使用任何可绘制类型,但九个补丁是指定Android按钮外观的最常用方法。
示例九补丁PNG。
注意边缘周围的一条黑色像素线,它们控制着图像的缩放。
将此位图保存为MyApplication / res / drawable / my_nine_patch.9.png 定义新样式(您可以在上面创建自定义Android主题的同一文件中定义新样式)...:
<resources>
...
<style name="MyCustomButton" parent="android:Widget.Button">
<item name="android:background">@drawable/my_nine_patch</item>
</style>
...
</resources>
将新按钮样式应用于自定义主题的buttonStyle属性:
<resources>
...
<style name="MyCustomTheme" parent=...>
...
<item name="android:buttonStyle">@style/MyCustomButton</item>
</style>
...
</resources>
现在,应用主题的活动中的按钮具有自定义图像。但是,您可能会注意到它们在选择时不会更改外观。阅读下面的Selector Drawables,了解如何使用多个drawable来定义一个基于状态而变化的drawable。“
从这里,您可以更改主题的某些组件(例如按钮纹理作为图像)。
如果您的主题看起来不错,请将其应用于Android Manifest中,如上所述。
如果它仍然没有回答您的问题,我将进一步编辑。