我可以有部分fitSystemWindow吗?

时间:2019-09-14 03:17:33

标签: android

如下所示的一个简单项目,我可以隐藏状态栏+导航栏+动作栏。

在纵向模式下,隐藏之前(状态栏+导航栏+动作栏),请注意图片位于状态栏+导航栏+动作栏的下方,而按钮位于状态栏+导航栏+动作栏的外部(因为按钮使用{{ 1}}

enter image description here

在纵向模式下,隐藏后(状态栏+导航栏+动作栏),如下所示

enter image description here

肖像模式对我来说还可以,因为它就是我想要的(即状态栏+导航栏+动作栏下的图片以及状态栏+导航栏+动作栏外的按钮)

在横向模式下,我仍然希望我的图片在状态栏+导航栏+动作栏下,但我希望按钮位于状态栏+动作栏之外,但在导航栏下。 (即部分fitSystemWindow)

原因是因为隐藏状态栏+导航栏+动作栏时,按钮看起来不对称,如下所示(即,左边无空白,右边有大量空白)。

enter image description here

我想要的如下所示

enter image description here

(注意:我不介意显示状态栏+导航栏+动作栏的情况,如下所示)

enter image description here

我的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

中获得该代码的完整代码。

0 个答案:

没有答案