如何确定垂直 ScrollView 的方向?
Posted
技术标签:
【中文标题】如何确定垂直 ScrollView 的方向?【英文标题】:How can I determine the direction of a vertical ScrollView? 【发布时间】:2015-10-14 10:49:42 【问题描述】:我需要根据滚动视图滚动隐藏和显示另一个线性布局
【问题讨论】:
看看this。 【参考方案1】:您可以为此使用onScrollChanged(int l, int t, int oldl, int oldt)
方法。由于没有用于侦听器的设置器,而只有该方法,因此您必须创建自己的 ScrollView 类并覆盖该方法并在您的实现中执行您的操作。
【讨论】:
我认为它只支持api版本23及以上 不,它从 API 级别 1 开始就存在,只需检查提供的链接 只支持api 23及以上版本 你从哪里得到的?点击我建议的链接,在右侧你会看到“Added in API level 1”。【参考方案2】:public class ObservableScrollView extends ScrollView
private static final int DEFAULT_THRESHOLD_DP = 4;
private ScrollDirectionListener scrollDirectionListener;
private int scrollThreshold;
public ObservableScrollView(Context context)
this(context, null);
public ObservableScrollView(Context context, AttributeSet attrs)
this(context, attrs, 0);
public ObservableScrollView(Context context, AttributeSet attrs, int defStyleAttr)
super(context, attrs, defStyleAttr);
init(context);
private void init(Context context)
scrollThreshold = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DEFAULT_THRESHOLD_DP, context.getResources().getDisplayMetrics());
@Override
protected void onScrollChanged(int x, int y, int oldX, int oldY)
super.onScrollChanged(x, y, oldX, oldY);
if (Math.abs(y - oldY) > scrollThreshold && scrollDirectionListener != null)
if (y > oldY)
scrollDirectionListener.onScrollUp(Math.abs(y - oldY));
else
scrollDirectionListener.onScrollDown(Math.abs(y - oldY));
public void setScrollThresholdInPx(int px)
scrollThreshold = px;
public void setScrollThresholdInDp(Context context, float dp)
scrollThreshold = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics());
public void setOnScrollDirectionListener(ScrollDirectionListener listener)
scrollDirectionListener = listener;
public interface ScrollDirectionListener
void onScrollDown(int pixels);
void onScrollUp(int pixels);
得到答案 :) 使用这个自定义滚动视图
ScrollView.setOnScrollDirectionListener(new ObservableScrollView.ScrollDirectionListener()
@Override
public void onScrollDown(int pixels)
contenttool.setVisibility(View.INVISIBLE);
@Override
public void onScrollUp(int pixels)
contenttool.setVisibility(View.VISIBLE);
);
【讨论】:
这正是我告诉你的——在自定义版本的 ScrollView 中覆盖“onScrollChanged()”。以上是关于如何确定垂直 ScrollView 的方向?的主要内容,如果未能解决你的问题,请参考以下文章
Scrollview总结:滑动问题监听Scrollview实现头部局改变