当前位置: 代码迷 >> java >> 并非总是以ContextThemeWrapper为主题的LayoutInflater
  详细解决方案

并非总是以ContextThemeWrapper为主题的LayoutInflater

热度:123   发布时间:2023-07-16 17:47:08.0

我正在尝试使用与应用程序默认设置不同的主题来填充布局,并像这样进行操作:

final View view = context.getLayoutInflater().cloneInContext(new ContextThemeWrapper(context, getThemeForView())).inflate(R.layout.some_layout, root, false);

第一次完成时,视图没有我想要的主题,但有主应用程序主题。 几分钟后重新创建视图时,它具有正确的主题。 为什么第一次创建视图时主题不同?

编辑:我无法设置android:theme因为我的主题是动态的。

我首先在Activity.onCreate创建了视图。 通过一些测试,我发现如果我在Activity.onWindowFocusChanged(boolean hasFocus)创建视图,并且hasFocus == true可以正常工作。 我仍然不确定为什么。

你可以加

android:theme="@style/some_theme"

清单文件中的活动。