我正在尝试在状态栏和导航栏下使我的应用程序出血。我使用fitSystemWindows = true使布局可以工作,而状态栏只是半透明的,但是当我也使导航栏出现时,工具栏似乎会做出反应,好像它需要填充在状态栏和通知栏下一样。 The toolbar appears to function normally when in landscape for some reason. 这种双重“半透明”的条形效果还使NestedScrollView扩展到页面底部之外。我也不确定如何使FAB合适。
另一方面,我最初使用CoordinatorLayout编写布局。这就增加了一个额外的问题,即NestedScrollView然后向上滚动到工具栏应该位于的底部,而不是它所在的位置。不过,我认为NestedScrollView通过CoordinatorLayout正确地尊重了屏幕的底部边界。
这是布局的xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:id="@+id/constraint"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView
android:id="@+id/nested_scroll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/toolbar">
<LinearLayout
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:clipToPadding="false"
android:orientation="vertical"
android:paddingBottom="74dp"/>
</android.support.v4.widget.NestedScrollView>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:background="@color/nav_color_1_bright"
android:elevation="4dp"
android:fitsSystemWindows="true"
app:navigationContentDescription="@string/open_nav_menu"
app:navigationIcon="@drawable/ic_dehaze_white_24dp"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_margin="16dp"
android:clipToPadding="false"
android:fitsSystemWindows="true"
android:onClick="createNew"
android:src="@drawable/ic_add_black_24dp"
app:backgroundTint="@color/darkAccent"
app:fabSize="normal" />
</android.support.constraint.ConstraintLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header"
app:itemBackground="@drawable/nav_item">
<ListView
android:id="@+id/drawer_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@null"
android:dividerHeight="0dp"
android:fitsSystemWindows="true" />
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
我以编程方式将以下“浅色主题”应用于“活动”。
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowTranslucentStatus">true</item>
<item name ="android:windowTranslucentNavigation">true</item>
</style>
<style name="LightTheme" parent="AppTheme">
<item name="android:colorPrimary">@color/lightPrimary</item>
<item name="android:colorPrimaryDark">@color/lightPrimaryDark</item>
<item name="android:colorAccent">@color/lightAccent</item>
<item name="android:navigationBarColor">@color/lightPrimaryDark</item>
<item name="actionOverflowButtonStyle">@style/OverflowMenuButtonStyleDark</item>
</style>
以下是布局的预览:(更大版本here)