【问题标题】:Change Theme From Fragment从片段更改主题
【发布时间】:2020-05-28 16:24:32
【问题描述】:

我遇到了无法更改样式主题的问题。我想确保每次导航到不同的片段时,应用程序主题都会改变。希望能帮我解决这个问题。提前谢谢你。

class MainKonsesiFragment : Fragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {


        //create ContextThemeWrapper from the original Activity Context with the custom theme
        val context = ContextThemeWrapper(activity, R.style.AppKonsesiTheme)
        //clone the inflater using the ContextThemeWrapper
        val localInflater = inflater.cloneInContext(context)

        val binding:FragmentMainKonsesiBinding = DataBindingUtil.inflate(localInflater,R.layout.fragment_main_konsesi,container,false)

        binding.cardInputPemantauan.setOnClickListener(
            Navigation.createNavigateOnClickListener(R.id.action_mainKonsesiFragment_to_inputPemantauanFragment)
        )
        binding.cardListKonsesi.setOnClickListener(
            Navigation.createNavigateOnClickListener(R.id.action_mainKonsesiFragment_to_listKonsesiFragment)
        )
        return binding.root
    }
}

【问题讨论】:

    标签: android kotlin styles fragment android-architecture-navigation


    【解决方案1】:

    你可以试试

     getActivity.getTheme().applyStyle(R.style.AppKonsesiTheme, true);
    

    甚至可能打电话

    getActivity().recreate();
    

    如果需要的话。认为您可能想在创建片段之前更改主题

    【讨论】:

    • 我加了两个都试过了,还是不行。主题,没变
    • @khoi 您可以在创建片段之前尝试调用它吗?你到底想改变什么?应用栏颜色?
    • 我应该在哪里添加这两行代码?在 onCreateView 方法里面? .是的,我想更改应用栏颜色。已添加图片。
    • @khoi 你的风格改变了 colorPrimary 吗?你确定这是一种风格而不是主题?您可以尝试在 Activity onCreate 中调用这两行代码,看看是否可行?为我工作
    • 如果在活动中添加代码并且它可以工作。但是在放置片段时,不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多