我想覆盖 ScrollView 的滚动方法(我不知道它用于处理滚动的功能),以便 EditText (带有垂直滚动条) )只有当y坐标(用于滑动手指/指针)的变化更大时,它才会在内部垂直滚动。如果x坐标的变化更大,则将调用另一个函数。
我该怎么办?这是一个澄清的代码结构。
@Override
public void scrollerFunction(aListener){
public void actionPerformed(params)
if(abs(startY-EndY) >= abs(startX-EndX))
//scrollUp or scrollDown
else
anotherFunction();
}
答案 0 :(得分:0)
您可以使用ScrollingMovementMethod()
并使用EditText
设置为setMovementMethod(new ScrollingMovementMethod())
。
yourEditText.setMovementMethod(new ScrollingMovementMethod(){
@Override
public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event){
//use MotionEvent to get touch position for your logic
}
});
我还没有对代码进行测试,但它应该对您的问题有所了解。
<强>更新强>
此ScrollVview
的代码,其中EditText
。
scrollView.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {
@Override
public void onScrollChanged() {
//example
if(abs(scrollView.getScrollY()-EndY) >= abs(scrollView.getScrollX()-EndX) ){
//scrollUp or scrollDown
}else{
anotherFunction();
}
}
});
答案 1 :(得分:0)
您可以覆盖onScrollChanged
方法。
你可以试试这个---&gt;
@Override
public void onScrollChanged (int l, int t, int oldl, int oldt){
// l Current horizontal scroll origin.
// t Current vertical scroll origin.
// oldl Previous horizontal scroll origin.
// oldt Previous vertical scroll origin.
if(abs(oldt-t) >= abs(oldl-l))
//scrollUp or scrollDown
else
anotherFunction();
}
试一试。我不知道它是否有效。