在Android片段中替换活动主题

时间:2018-08-21 09:40:31

标签: android android-fragments kotlin themes

我正在尝试为活动中的片段设置主题。

当我使用Set a theme for a fragment中所述的充气机在片段的onCreate函数中设置片段主题时,如下所示:

    var contextThemeWrapper = ContextThemeWrapper(getActivity(), R.style.FragmentTheme);
    var localInflater = inflater.cloneInContext(contextThemeWrapper)
    return localInflater.inflate(R.layout.fragment_component_indicator, container, false)

或在片段XML的布局中,该片段的主题无效。

使用Layout Inspector,我看到该主题确实添加到了片段布局中,但是活动主题仍然存在:

enter image description here

关于如何设置片段主题的任何提示吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Fragment.onGetLayoutInflater()方法覆盖上下文主题。这是片段视图尚未膨胀的地方。

override fun onGetLayoutInflater(savedInstanceState: Bundle?): LayoutInflater {
    context?.setTheme(R.style.Theme_AppName_Light)
    return super.onGetLayoutInflater(savedInstanceState)
}