Android以编程方式设置正常状态栏

时间:2015-11-30 09:00:49

标签: android material-design android-statusbar

我一直在使用Material design和CollapsingToolbarLayout,并希望在其中一个片段中使用Translucent Status Bar。 我有使用AppTheme的MainActivity(在style.xml半透明状态栏和覆盖是假的)。我有Fragment1和Fragment2 Fragment1不应该有半透明状态栏。与primaryDarkColor一样正常。但是,在Fragment2中,我需要在程序上打开半透明状态栏。我通过这种方式实现了它:

   @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    //Making status bar transparent
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window w = getActivity().getWindow(); // in Activity's onCreate() for instance
        w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }

当我再次回到Fragment1时,状态栏被隐藏了。我想我应该禁用Translucent Status Bar onPause()或onStop()。但不知道如何做到这一点。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

要更改状态栏颜色,请使用setStatusBarColor(int color)。使用下面的代码

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(activity.getResources().getColor(R.color.example_color));

答案 1 :(得分:0)

如果您使用的是Kotlin,则可以使用以下代码将状态栏设置为正常状态:

# Patients Consulted -6 months