实施用户主题选择

我想让用户在几个不同的主题之间进行选择,并且想知道这是否是一种正确的处理方式。我对此方法进行了一些测试,它确实有效,但是我认为可能会有更好的方法,并且以后可能会引起一些问题,因此想问一下。

我正在考虑为每个主题创建不同的布局,并且onCreate只是对setContentView()方法进行切换。我先加载一个保存的SharedPreference值(整数),然后根据该值显示相应的布局。显然,用户可以SharedPreference使用按钮或其他方式更改值。

由于这些布局基本上是相同的,但是具有不同的颜色,所以我想TextViews在每个布局文件中为我的视图和其他视图使用相同的ID 。我的主要问题是,这会引起问题吗?

很抱歉,没有代码的文字墙。我只想对这种情况有一个良好实践的一般想法。提前致谢。


慕侠2389804
浏览 592回答 3
3回答

宝慕林4294392

如果您采用这种方式,它确实可以工作,而且我认为这不会造成任何问题,但是似乎很麻烦(您必须将所有布局乘以要添加的所有主题。如果以后再使用,要修改布局中的资源,则必须在所有主题中都对其进行修改。您肯定会忘记这一点)为什么不使用Android 的样式和主题功能?它们可以轻松应用于整个活动:<activity android:theme="@style/my_theme">这样,当您检测到所用SharedPreferences值的变化(首选项活动上的按钮等)时,就可以切换样式。或者更好的是,您可以设置样式以在运行时(创建活动时)读取您的首选项值,并相应地应用正确的样式/主题。

HUWWW

您还可以使用以下方法动态更改主题:ContextThemeWrapper w = new ContextThemeWrapper(this, <newTHEMEId>);getTheme().setTo(w.getTheme());在每个活动的onCreate之前。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android