我正在尝试添加一个AppBarLayout,当不需要滚动(或内容尚未滚动)时,elavation为0,但是当用户可以滚动或进行滚动时,则显示elavation(例如Google Tasks应用)。在new material Appbar documentation中,我发现将app:liftOnScroll="true"
属性添加到我的Appbar可以解决问题,但是添加后,NestedScrollView的内容显示在工具栏上方:
我面临的另一个问题是,即使我不使用app:liftOnScroll="true"
,也是我的NestedScrollView没有显示在应用栏的底部:
这是我的片段的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>
谢谢!
答案 0 :(得分:2)
appbar_scrolling_view_behavior
与CordinatorLayout
一起使用。因此,如果CordinatorLayout
,则需要使用ConstraintLayout
作为父对象。