我将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);
}
}
但我的小吃店高度翻了一倍:
为什么零食栏高度在NoActionBar主题中加倍?
答案 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