- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个协调器布局,其中包含水平回收器 View 的垂直回收器 View 。
我定义了一个 CoordinatorLayout.Behavior,它使用 onNestedScroll 根据 dyConsumed 对我的 View 执行一些操作。
如果您通过触摸水平回收器 View 之外的任何地方进行滚动,然后垂直滚动,它就会起作用。
如果你在卷轴的末尾 throw ,它有时会起作用。
如果您触摸水平回收器 View 然后垂直滚动,则它不起作用。
它通常具有非常不一致的行为。就像,有时它不会关心你从哪里开始滚动,直到其中一个水平回收器被滚动,然后它会再次停止工作。
我尝试通过让 onStartNestedScroll 始终返回 true 并将我的处理代码移至 onNestedPreScroll 来更改行为以尽可能多地提供给我它。通过这样做,我现在可以在子回收器中水平滚动时获得他们手指垂直移动的dy更新。但是如果触摸是在水平回收器上开始的,我仍然没有得到任何垂直滚动的结果。
无论在何处启动触摸,我都必须执行哪些操作才能使所有垂直滚动 dy?
设置包含所有内容(并且包含在协调器布局中)的约束布局的行为
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) ((ConstraintLayout) toolbar.getParent()).getLayoutParams();
layoutParams.setBehavior(scrollBehavior);
自定义行为摘录
@Override
public boolean onStartNestedScroll(@NonNull CoordinatorLayout coordinatorLayout, @NonNull V child, @NonNull View directTargetChild, @NonNull View target, int axes, int type) {
return axes == ViewCompat.SCROLL_AXIS_VERTICAL;
}
@Override
public void onNestedScroll(@NonNull CoordinatorLayout coordinatorLayout,
@NonNull V child,
@NonNull View target,
int dxConsumed,
int dyConsumed,
int dxUnconsumed,
int dyUnconsumed,
int type) {
if (dyConsumed > 0) {
//stuff
} else if (dyConsumed < 0) {
//other stuff
}
}
我的垂直回收机
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/bucket_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:clipToPadding="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
我的卧式回收机
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/store_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingEnd="32dp"
android:paddingRight="32dp"
android:clipToPadding="false"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
最佳答案
与直觉相反,解决方案是使用 android:nestedScrollingEnabled="false"禁用水平回收器上的嵌套滚动
关于android - 当通过触摸水平滚动子项然后垂直滚动启动垂直滚动时,onNestedScroll 不给出 dy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54710448/
我有课 public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior { public ScrollAwa
我正在尝试为 BottomNavigationView 创建一种行为,该行为应该在用户向下滚动时消失,该解决方案应该像 Google Material Design Guideline 一样工作。我遇
我有一个协调器布局,其中包含水平回收器 View 的垂直回收器 View 。 我定义了一个 CoordinatorLayout.Behavior,它使用 onNestedScroll 根据 dyCon
我想实现滚动时隐藏 BottomNavigationView。在谷歌上搜索解决方案,因为 android 框架似乎不存在一个可以开箱即用的解决方案,我当前的设置如下:
我为 float 操作按钮实现了一个简单的隐藏/显示行为。 onNestedScroll 事件被调用,直到在 float 操作按钮上调用 hide() 或 setVisiblity(View.GONE
我是一名优秀的程序员,十分优秀!