我尝试使用AppBottomBar,并且希望能够像setExpanded
一样在AppBarLayout中以编程方式隐藏或显示它。
我的布局就像
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
...
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/nested"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<fragment
android:id="@+id/navHost"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/home_nav" />
</androidx.core.widget.NestedScrollView>
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomAppBar"
style="@style/Widget.MaterialComponents.BottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:backgroundTint="@color/colorPrimary"
app:fabAlignmentMode="center"
app:hideOnScroll="true"
app:layout_scrollFlags="scroll|enterAlways"
app:navigationIcon="@drawable/ic_menu"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
我尝试使用AppBottomBar的行为,但是它不起作用。
答案 0 :(得分:0)
您可以从其行为类中使用slideUp(...)
和slideDown(...)
方法。例如:
科特林
val bottomAppBar = ...
val behavior = bottomAppBar.behavior as HideBottomViewOnScrollBehavior
behavior.slideDown(bottomAppBar) // use this to hide it
behavior.slideUp(bottomAppBar) // use this to show it
Java
BottomAppBar bottomAppBar = ...
HideBottomViewOnScrollBehavior behavior = (HideBottomViewOnScrollBehavior) bottomAppBar.behavior;
behavior.slideDown(bottomAppBar) // use this to hide it
behavior.slideUp(bottomAppBar) // use this to show it
答案 1 :(得分:0)
科特林
class HideBottomNavigationOnScrollBehavior<V : View>(
context: Context?,
attrs: AttributeSet?
) : HideBottomViewOnScrollBehavior<V>(context, attrs) {
public override fun slideDown(child: V) {
super.slideDown(child)
}
public override fun slideUp(child: V) {
super.slideUp(child)
}
}
答案 2 :(得分:0)
在底部的应用栏上调用performShow()
和performHide()
即可满足您的需求。