gpt4 book ai didi

android - 无缝嵌套滚动 (Android)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:25:02 26 4
gpt4 key购买 nike

我们都被建议不要嵌套包含滚动机制的 View 。然而,在最新的 Android 版本 (5.0) 中,Phone 应用引起了我的注意,它似乎是 ScrollView 内部的 ListView

真正让我着迷的是滚动机制从 ScrollView 无缝切换到 ListView

请注意,在实际 ListView 开始滚动之前,选项卡上方的内容被推出 View 。

我试过自己复制这个,但最终没有成功。这是我采用的基本方法...

enter image description here

通过单个连续触摸事件(没有抬起手指)...

随着用户滚动,ListView 慢慢地覆盖了 ImageView。一旦 ImageView 被 100% 覆盖并且 ListView 占据整个屏幕,ListView 开始滚动。

我目前正在监听 ListView 上的触摸事件,如果到达顶部,则在 ListView 上调用 requestDisallowInterceptTouchEvent,即

@Override
public boolean onTouch(View v, MotionEvent event) {
if (listViewAtTop) {
v.requestDisallowInterceptTouchEvent(true);
} else {
v.requestDisallowInterceptTouchEvent(false);
}
return false;
}

仅当您抬起手指并继续滚动时,切换滚动上下文才有效。

是否有不同的方法可以达到预期的效果?

最佳答案

Android 5.0 Lollipop (API 21) 添加了嵌套滚动支持。

据我所知,ListView (AbsListView) 和 ScrollView 现在都支持此功能(如果在 API 21 上运行),但必须在 ScrollView 上启用它。

有两种方式,调用 setNestedScrollingEnabled(true)或者使用布局属性 android:nestedScrollingEnabled="true"(未记录)

要了解它的工作原理,或为自定义小部件支持它,关键方法如下:

不幸的是,除了 JavaDoc 本身相当简单之外,没有任何指南或培训可以解释它是如何工作的,并且除了 ScrollView 之外没有其他示例。

关于android - 无缝嵌套滚动 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27162350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com