快餐栏高度在NoActionBar主题中加倍

时间:2018-02-15 19:46:56

标签: android android-snackbar

我将NoActionBar用于这样的活动:

 <style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

我试着像这样设置全屏:

 @Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    AppLog.Log(TAG, "hasFocus: " + hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LOW_PROFILE
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    }
}

但我的小吃店高度翻了一倍:

enter image description here

为什么零食栏高度在NoActionBar主题中加倍?

1 个答案:

答案 0 :(得分:3)

您的零食栏占用了前一个操作栏的空间。用它来修复它:

final Snackbar snackbar = Snackbar.make(findViewById(R.id.fullscreen_content),
            message, Snackbar.LENGTH_LONG);

View snackbarView = snackbar.getView();

//One way of getting the height of the navBar
int navbarHeight = getNavigationBarSize(this).y;

//The LayoutParams of the layout you are using
CoordinatorLayout.LayoutParams parentParams = (CoordinatorLayout.LayoutParams) snackbarView.getLayoutParams();
    parentParams.setMargins(0, 0, 0, 0 - ScreenUtils.getNavigationBarHeight(activity));
    snackbarView.setLayoutParams(parentParams);

snackbar.show();

<强>说明: 有两种方法可以获得Navbar的高度。

getNavigationBarSize(this).y;

ScreenUtils.getNavigationBarHeight(activity));

使用其中之一并从父版面的边距底部中减去该数量。

如果使用相对或线性布局,请使用适当的布局参数,例如 RelativeLayout.LayoutParams LinearLayout.LayoutParams