我想让用户在几个不同的主题之间进行选择,并且想知道这是否是一种正确的处理方式。我对此方法进行了一些测试,它确实有效,但是我认为可能会有更好的方法,并且以后可能会引起一些问题,因此想问一下。我正在考虑为每个主题创建不同的布局,并且onCreate只是对setContentView()方法进行切换。我先加载一个保存的SharedPreference值(整数),然后根据该值显示相应的布局。显然,用户可以SharedPreference使用按钮或其他方式更改值。由于这些布局基本上是相同的,但是具有不同的颜色,所以我想TextViews在每个布局文件中为我的视图和其他视图使用相同的ID 。我的主要问题是,这会引起问题吗?很抱歉,没有代码的文字墙。我只想对这种情况有一个良好实践的一般想法。提前致谢。
3 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
如果您采用这种方式,它确实可以工作,而且我认为这不会造成任何问题,但是似乎很麻烦(您必须将所有布局乘以要添加的所有主题。如果以后再使用,要修改布局中的资源,则必须在所有主题中都对其进行修改。您肯定会忘记这一点)
为什么不使用Android 的样式和主题功能?
它们可以轻松应用于整个活动:
<activity android:theme="@style/my_theme">
这样,当您检测到所用SharedPreferences值的变化(首选项活动上的按钮等)时,就可以切换样式。或者更好的是,您可以设置样式以在运行时(创建活动时)读取您的首选项值,并相应地应用正确的样式/主题。
HUWWW
TA贡献1874条经验 获得超12个赞
您还可以使用以下方法动态更改主题:
ContextThemeWrapper w = new ContextThemeWrapper(this, <newTHEMEId>);
getTheme().setTo(w.getTheme());
在每个活动的onCreate之前。
- 3 回答
- 0 关注
- 516 浏览
添加回答
举报
0/150
提交
取消