请注意,我不是指像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元素混合在一个大的意大利面条代码中。
处理这种代码的更好方法是什么?
答案 0 :(得分:1)
您可以编写自定义按钮视图。示例:
public final class ThemedButton extends Button { }
并在构造函数中,您可以根据需要初始化视图。在构造函数中,您具有上下文,因此请获取首选项并设置主题按钮的背景颜色。这样就可以避免弄脏你的活动。
希望这会有所帮助:)