实现自定义主题

时间:2014-02-09 15:45:47

标签: android

请注意,我不是指像Theme.App.Light, Theme.App.Dark等的Android主题。

我需要使用共享首选项在我的应用程序中提供不同的主题。只有在backgronud图像和图像按钮中,主题才会相互不同。

主题的选择将由用户使用shred首选项指定。所以假设我有选择的主题偏好,如:

theme_name = sharedPrefs.getString("theme_name", "NULL");

现在实现这一目标的最佳方式是什么。

一种相当粗略的方法是在每个活动中设置背景资源和图像按钮,如:

if (theme_name == "red") {
    button.setImageResource( R.drawable.red_button );
}

elif  (theme_name == "green") {
    button.setImageResource( R.drawable.green_button );
}
...

现在,如果我在每个活动中继续这样做,我将基本上将表现,逻辑和UI元素混合在一个大的意大利面条代码中。

处理这种代码的更好方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以编写自定义按钮视图。示例:

public final class ThemedButton extends Button { }并在构造函数中,您可以根据需要初始化视图。在构造函数中,您具有上下文,因此请获取首选项并设置主题按钮的背景颜色。这样就可以避免弄脏你的活动。

希望这会有所帮助:)