繁体   English   中英

具有不同主题的片段

[英]Fragments with different themes

我在尝试在运行时更改Android Activity的主题时遇到了麻烦。

这就是我要归档的内容:我有一个包含三个片段的活动(MainActivity)。 这些片段中的两个应该有一个工具栏和一个普通的状态栏,但是第三个应该没有工具栏,并且应该有一个透明的状态栏,其后面是内容。 因此,我创建了两种样式:带有工具栏等的普通AppTheme和没有样式的另一种称为全屏的样式。 现在,切换片段时主题应该会改变。

我尝试过在膨胀一个新片段后才更改主题,但这没有用(显然)。

我也看到了这个问题和其他一些问题,它们几乎都包含了相同的答案,这对我不起作用。

我真的希望你们中的一个能有所帮助!

谢谢

好了,您可以修改Activity主题,然后recreate它以查看其效果

class YourActivity{
boolean isThirdFragmentVisible;
...
public void onNavigateToThirdFragment(){
   setTheme(<full screen theme>);
   isThirdFragmentVisible = true;
   recreate();
}

...
public void onCreate(){
   if(isThirdFragmentVisible){
       showThirdFragment();
   }
}
...
}

任何片段都可以访问附加的活动。 因此,片段可以设置任何活动属性,例如工具栏和状态栏。

例:

状态栏:

  • 在onViewCreated回调中,您可以将此模式设置为不显示状态栏:

     getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) 
  • 要在其他片段中显示状态栏,可以用相同的方式设置它:

     getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) 

工具列:

同样,可以使用setSupportActionBar活动方法通过任何片段来设置工具栏。 详细信息> https://developer.android.com/training/appbar/setting-up.html#add-toolbar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM