为什么我的内容显示在我的应用栏下方?

时间:2019-08-04 02:15:43

标签: android android-coordinatorlayout appbar

我正在尝试添加一个AppBarLayout,当不需要滚动(或内容尚未滚动)时,elavation为0,但是当用户可以滚动或进行滚动时,则显示elavation(例如Google Tasks应用)。在new material Appbar documentation中,我发现将app:liftOnScroll="true"属性添加到我的Appbar可以解决问题,但是添加后,NestedScrollView的内容显示在工具栏上方:

enter image description here

我面临的另一个问题是,即使我不使用app:liftOnScroll="true",也是我的NestedScrollView没有显示在应用栏的底部: enter image description here

这是我的片段的xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:fitsSystemWindows="true"
    tools:context=".ResetPasswordFragment">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBar_resetPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:liftOnScroll="true"
        >

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            />

    </com.google.android.material.appbar.AppBarLayout>

    <androidx.core.widget.NestedScrollView
        android:id="@+id/scrollView_resetPassword"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <!-- Some Content -->

        </LinearLayout>

    </androidx.core.widget.NestedScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>

我知道,如果将layout_marginTop="?attr/actionBarSize"添加到NestedScrollView中,该问题将得到解决,但是我看到了很多示例,这些示例创建了我想要的视图而无需添加视图。

这是我用于活动的风格

<style name="AppTheme.NoActionBar" parent="Theme.MaterialComponents.Light.NoActionBar">
        <item name="android:statusBarColor">#fff</item>
        <item name="android:windowLightStatusBar">true</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:fontFamily">@font/barlow</item>
    </style>

谢谢!

1 个答案:

答案 0 :(得分:2)

appbar_scrolling_view_behaviorCordinatorLayout一起使用。因此,如果CordinatorLayout,则需要使用ConstraintLayout作为父对象。