LayoutInflater 与 ContextThemeWrapper 并不总是主题

LayoutInflater with ContextThemeWrapper not always themed

我正在尝试使用不同于应用程序默认主题的布局来扩充布局,并且这样做:

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"

到清单文件中的 activity。