84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
我现在在给Activity动态换主题时先把Theme id保存在SharedPreferences中,然后用RxBUs发送事件总线让Activity改变Theme,然而这样只有再次打开该Activity主题才会改变;我想通过Activity.recreate()方法立即改变其主题但是有明显闪动,请问有什么好的方法让其不闪动?
ringa_lee
如果是在Activity中切换,可以考虑按照切换后的主题方案分别设置当前界面所有可见元素的属性;如果是在Fragment中切换,fragment也可以设置theme,像这样:
@Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { final Context contextThemeWrapper = new ContextThemeWrapper( getActivity(), isDay ? R.style.day : R.style.night); LayoutInflater localInflater = inflater .cloneInContext(contextThemeWrapper); View v = localInflater.inflate(R.layout.fragment_layout, container, false); return v; }
github上哔哩哔哩开源了一个方案,你可以去看一下
如果是在Activity中切换,可以考虑按照切换后的主题方案分别设置当前界面所有可见元素的属性;如果是在Fragment中切换,fragment也可以设置theme,像这样:
github上哔哩哔哩开源了一个方案,你可以去看一下