gpt4 book ai didi

android - 如何找到 Horizo​​ntalScrollView 的滚动结束值

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

我需要实现以下场景,

这里我有两个 horizo​​ntalScrollView,上面的 scrollView 是主菜单,下面的 scrollView 是子菜单。

当我滚动主菜单时,中心箭头下方的菜单将在较低的 ScrollView 中显示其子菜单,并且从较低的 ScrollView 中,中心箭头下方的子菜单显示该子菜单的屏幕。

这是我的要求:enter image description here

我已经使用 Horizo​​ntalScrollViews 和 ViewFlipper 实现了它,它也可以工作,但只有当我缓慢滚动而不是快速滚动时,它才会给出正确的结果。

我在 ACTION_UP 事件中使用了 onTouch() 方法,所以当我从屏幕上松开手指时,它会在那个点给我 getScrollX() 位置,但在这里我需要 getScrollX() 滚动完成/停止时的位置。

这是我的代码:-

  @Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {

case R.id.mHorizontalScrollViewMain:
if (event.getAction() == KeyEvent.ACTION_UP) {
Log.d("test", " " + hsvUpperTab.getScrollX() + " , "+ mViewFlipper.getChildCount());
getUpperTabScrolled(hsvUpperTab.getScrollX());
}
break;

case R.id.mHorizontalScrollViewSub:
if (event.getAction() == KeyEvent.ACTION_UP) {
Log.d("test1", " " + hsvLowerTab.getScrollX());
getLowerTabScrolled(hsvLowerTab.getScrollX());

}

default:
break;

}

return false;
}

最佳答案

这是我的答案:

public class ScrollViewCustom extends HorizontalScrollView {
private Runnable scrollerTask;
private int intitPosition;
private int newCheck = 100;
private static final String TAG = "ScrollView";

public interface onScrollStopListner{
void onScrollStoped();
}

private onScrollStopListner onScrollstopListner;

public ScrollViewCustom(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
scrollerTask = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
int newPosition = getScrollX();
if ( intitPosition - newPosition == 0 ) {
if ( onScrollstopListner != null ) {
onScrollstopListner.onScrollStoped();
}
}else{
intitPosition = getScrollX();
ScrollViewCustom.this.postDelayed(scrollerTask, newCheck);
}
}
};
}

public void setOnScrollStopListner( ScrollViewCustom.onScrollStopListner listner ){
onScrollstopListner = listner;
}

public void startScrollerTask(){
intitPosition = getScrollX();
ScrollViewCustom.this.postDelayed(scrollerTask, newCheck);
}

}

这是 Activity :

scroll.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if ( event.getAction() == MotionEvent.ACTION_UP ) {
scroll.startScrollerTask();
}
return false;
}
});



scroll.setOnScrollStopListner(new onScrollStopListner() {
@Override
public void onScrollStoped() {
// TODO Auto-generated method stub
Log.d(TAG," "+scroll.getScrollX());

}

});

关于android - 如何找到 Horizo​​ntalScrollView 的滚动结束值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12242983/

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