如下所示的一个简单项目,我可以隐藏状态栏+导航栏+动作栏。
在纵向模式下,隐藏之前(状态栏+导航栏+动作栏),请注意图片位于状态栏+导航栏+动作栏的下方,而按钮位于状态栏+导航栏+动作栏的外部(因为按钮使用{{ 1}}
在纵向模式下,隐藏后(状态栏+导航栏+动作栏),如下所示
肖像模式对我来说还可以,因为它就是我想要的(即状态栏+导航栏+动作栏下的图片以及状态栏+导航栏+动作栏外的按钮)
在横向模式下,我仍然希望我的图片在状态栏+导航栏+动作栏下,但我希望按钮位于状态栏+动作栏之外,但在导航栏下。 (即部分fitSystemWindow)
原因是因为隐藏状态栏+导航栏+动作栏时,按钮看起来不对称,如下所示(即,左边无空白,右边有大量空白)。
我想要的如下所示
(注意:我不介意显示状态栏+导航栏+动作栏的情况,如下所示)
我的fitSystemWindow=true
代码如下
layout
如何更改可以在纵向/横向模式下使用的布局代码,并且仍然实现我想要的功能? (即,在“纵向”模式下,它<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/tree"/>
<ImageView android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/bridge"/>
<android.support.constraint.ConstraintLayout
android:id="@+id/button_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:clipToPadding="true"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Top Button"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Bottom Button"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
</FrameLayout>
指向所有状态栏+导航栏+操作栏,而在横向模式下,它仅fitSystemWindow
到状态栏+操作栏,而不对导航栏)。
您可以在https://github.com/elye/issue_android_fit_system_window_partial
中获得该代码的完整代码。