当我切换到另一个片段时,有时我的AppBar无法滚动。
这是我的代码和布局。
BaseActivity.xml
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
tools:context=".activity.drawer.BaseDrawerActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarDrawer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppBaseTheme.AppBarOverlay"
app:elevation="0dp">
<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|snapMargins">
<TextView
android:id="@+id/tvBaseDrawerToolbarTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
... />
</androidx.appcompat.widget.Toolbar>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clActivity2Header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:visibility="gone"
app:layout_scrollFlags="scroll|snapMargins" >
...
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clActivity1Header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_scrollFlags="scroll|snapMargins" >
...
</androidx.constraintlayout.widget.ConstraintLayout>
<include
android:id="@+id/clActivity1SubHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"/>
</com.google.android.material.appbar.AppBarLayout>
<include
layout="@layout/activity_base_drawer_content" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
BaseActivity.java
class BaseActivity {
//... some stuffs here
private void showFirstFragment() {
// .. fragmentTransaction stuff
clActivity1Header.setVisibility(View.GONE);
clActivity1SubHeader.setVisibility(View.GONE);
}
private void showSecondFragment() {
// .. fragmentTransaction stuff
clActivity1Header.setVisibility(View.GONE);
clActivity1SubHeader.setVisibility(View.GONE);
}
private void showMainFragment() {
// .. fragmentTransaction stuff
clActivity1Header.setVisibility(View.VISIBLE);
clActivity1SubHeader.setVisibility(View.VISIBLE);
}
}
此外,activity_base_drawer_content
父级布局已经包含app:layout_behavior="@string/appbar_scrolling_view_behavior"
。
就是这样,这是我到目前为止所做的全部,但是我仍然真的不知道为什么当我切换到新片段并返回时,有时AppBar有时不滚动。
感谢您的帮助,谢谢。