Activity如何动态改变主题不闪动

发布于 2022-09-03 13:48:18 字数 170 浏览 26 评论 0

我现在在给Activity动态换主题时先把Theme id保存在SharedPreferences中,然后用RxBUs发送事件总线让Activity改变Theme,然而这样只有再次打开该Activity主题才会改变;我想通过Activity.recreate()方法立即改变其主题但是有明显闪动,请问有什么好的方法让其不闪动?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

离旧人 2022-09-10 13:48:18

如果是在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;
    }
爱要勇敢去追 2022-09-10 13:48:18

github上哔哩哔哩开源了一个方案,你可以去看一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文