【发布时间】:2018-09-06 16:49:32
【问题描述】:
我想在HorizontalScrollView 中实现Snapping effect,即当用户水平滚动时,最显眼的项目(项目可见> 50%)来到中心。
我尝试使用
hsv.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
int scrollX = hsv.getScrollX(); // For HorizontalScrollView
Log.e("scrollX",String.valueOf(scrollX));
// DO SOMETHING WITH THE SCROLL COORDINATES
}
});
但即使我们不触摸屏幕,该值也不是恒定的。
这里是 logcat 的一部分:
03-28 11:11:22.116 26639-26639/package_name E/scrollX: 0
03-28 11:11:22.133 26639-26639/package_name E/scrollX: 792
03-28 11:11:22.133 26639-26639/package_name E/scrollX: 0
03-28 11:11:22.151 26639-26639/package_name E/scrollX: 795
03-28 11:11:22.151 26639-26639/package_name E/scrollX: 0
03-28 11:11:22.166 26639-26639/package_name E/scrollX: 799
03-28 11:11:22.166 26639-26639/package_name E/scrollX: 0
03-28 11:11:22.183 26639-26639/package_name E/scrollX: 801
03-28 11:11:22.183 26639-26639/package_name E/scrollX: 0
03-28 11:11:22.199 26639-26639/package_name E/scrollX: 803
03-28 11:11:22.199 26639-26639/package_name E/scrollX: 0
03-28 11:11:22.216 26639-26639/package_name E/scrollX: 804
03-28 11:11:22.216 26639-26639/package_name E/scrollX: 0
03-28 11:11:22.233 26639-26639/package_name E/scrollX: 805
03-28 11:11:22.233 26639-26639/package_name E/scrollX: 0
03-28 11:11:22.249 26639-26639/package_name E/scrollX: 806
03-28 11:11:22.249 26639-26639/package_name E/scrollX: 0
现在我已经尝试了这些解决方案,I am not getting the point 或 I don't know to do it。请帮忙。
- HorizontalScrollView within ScrollView Touch Handling
- HorizontalScrollView with snapping effect
- Creating Custom Horizontal Scroll View With Snap or paging
- Creating a “Snapping” Horizontal Scroll View
我的用例:
我有一个 HorizontalScrollView 连接到 Recyclerview(Vertical) 的适配器,所以 snapHelper 可以垂直完成,但我不知道如何使它水平。
【问题讨论】:
标签: java android performance horizontal-scrolling horizontalscrollview