📌  相关文章
📜  无法膨胀行为子类 android.support.design.widget.AppBarLayout$ScrollingViewBehavior (1)

📅  最后修改于: 2023-12-03 15:26:16.850000             🧑  作者: Mango

介绍: android.support.design.widget.AppBarLayout$ScrollingViewBehavior

android.support.design.widget.AppBarLayout$ScrollingViewBehavior 是一个行为子类,它可以让一个视图(例如 RecyclerViewNestedScrollView)在 AppBarLayout 上滚动。

特点
  • 可让视图在 AppBarLayout 上滚动
  • 具备可扩展性,可自定义参数
用法

要将 ScrollingViewBehaviorAppBarLayout 中的视图一起使用,只需在视图上添加 app:layout_behavior 属性,然后将其设为 android.support.design.widget.AppBarLayout$ScrollingViewBehavior。例如:

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior" />

也可以将此特定行为用于自定义视图或视图组。为此,您需要重写 onStartNestedScrollonNestedScroll 方法,并根据需要返回布尔值。以下是一个示例类:

public class MyScrollingViewBehavior extends AppBarLayout.ScrollingViewBehavior {

    public MyScrollingViewBehavior(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int nestedScrollAxes) {
        // 在这里自定义开始嵌套滚动行为
        return super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes);
    }

    @Override
    public void onNestedScroll(CoordinatorLayout coordinatorLayout, View child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
        // 在这里自定义嵌套滚动行为
        super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);
    }
}

最后在布局里将自定义的行为类用于视图上即可,例如:

<com.example.MyCustomView
    android:id="@+id/customView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="com.example.MyScrollingViewBehavior" />
结论

在使用 AppBarLayout 时,ScrollingViewBehavior 是一个非常有用的行为子类,可将视图与 AppBarLayout 上滚动。

如果您需要自定义参数或行为,可以重写 onStartNestedScrollonNestedScroll 方法,并使用自定义的行为类。