我正在处理一个有几个不同阶段的活动。它的设计就像一个向导,因此它的一些部分是教程,就像隐藏工具栏和状态栏的页面一样。活动以隐藏工具栏开始。在每个片段中,我有onToolbarShown(ActionBar ab)
(在基础片段onStart()
方法中调用),我用它来编辑标题,如果后退按钮显示等,然后我调用{{1下面的方法:
showToolbar
(public void showSystemUi(boolean show){
if(show){
KKDeviceUtil.showSystemUI(mRootLayout);
}else {
KKDeviceUtil.hideSystemUI(mRootLayout);
}
}
@Override
public void showToolbar(boolean show){
if(getSupportActionBar() != null){
showSystemUi(show);
if(show) {
mRootLayout.setFitsSystemWindows(true);
getSupportActionBar().show();
}else{
getSupportActionBar().hide();
mRootLayout.setFitsSystemWindows(false);
}
}
}
是由android here建议的库存展示/隐藏方法)
问题是,第一次显示工具栏时,状态栏的颜色错误,布局按状态栏的高度分流。如下所示:
当我下次切换片段时,问题会清除:
如果我回到之前的片段,它看起来是正确的:
如果我从不隐藏工具栏/系统窗口,我就不会遇到这个问题。我原本以不同的顺序进行了一些操作,并认为重新安排它们可能有所帮助,但它似乎没有任何区别。我也尝试过调用showSystemUi
,但这没有效果。我的setStatusBarColor
中也有<item name="android:statusBarColor">@color/status_bar_color</item>
这是我状态栏的正确颜色,而我的primaryDark与上面显示的屏幕截图(错误)颜色相同。
我似乎无法找到我在这里做错了什么,这是显示/隐藏我的工具栏/系统ui的正确方法,为什么这只发生在工具栏的第一次显示上?
(注意:很难从屏幕截图中看到,但在第一个屏幕截图中,“完成”按钮比第三个屏幕截图中的正确位置更接近底部)
答案 0 :(得分:-1)
请看下面我已经向您展示了将在状态栏上反映颜色的演示风格。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/side_bar_color</item>
<item name="colorPrimaryDark">@color/side_bar_color</item>
<item name="colorAccent">@color/side_bar_color</item>
</style>
“colorPrimaryDark”是状态栏中使用的颜色,您需要将此样式设置为您的应用程序或清单类中的活动