管理多个按钮选择器?

时间:2013-05-29 16:16:38

标签: android xml button css-selectors

我的计算器应用包含 30个按钮。我想为计算器键盘提供主题。主题更改按钮背景(渐变,而不是图像背景)和字体。所有按钮的某些主题颜色相同,而有些主题颜色为数字,另一些颜色为运算符等等。

颜色变化使用来自res / drawable / * .xml

的选择器

如何通过代码更改主题? 希望避免输入:

button.setBackground(Drawable background);

button.setTypeface(font);  30次。如果我有5个主题,那么30 * 5 * 2 = 300行代码!!

我是新手,如果没有别的办法,我会选择150行。

另外如何保存用户主题选择?使用偏好?

1 个答案:

答案 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中,如上所述。

如果它仍然没有回答您的问题,我将进一步编辑。