我正在制作一个应用程序,其中有一个文本视图(占用了我的大部分活动)。Textview 跨多个页面显示大量文本(页面只不过是分配给字符串数组的大文本,并且每个数组元素都显示在页面更改触发器上)。我使用下面线程中的代码来介绍右/左滑动以在页面之间导航。
以下是我在全部中使用的确切代码。
public class OnSwipeTouchListener extends Activity implements OnTouchListener{
private final GestureDetector gestureDetector = new GestureDetector(getBaseContext(), new GestureListener());
public boolean onTouch(final View v, final MotionEvent event) {
//super.onTouch(v, event);
return gestureDetector.onTouchEvent(event);
}
private final class GestureListener extends SimpleOnGestureListener {
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0) {
onSwipeRight();
} else {
onSwipeLeft();
}
}
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
}
public void onSwipeRight() {
}
public void onSwipeLeft() {
}
然后这就是我在活动中使用这个类的方式
myTextView.setOnTouchListener(new OnSwipeTouchListener() {
public void onSwipeRight() {
displayPreviousPage() //code to display previous page
}
public void onSwipeLeft() {
displayNextPage() //code to display next page
}
});
到目前为止一切正常。现在我想为我的文本视图启用垂直滚动,以防我的文本超出屏幕高度。因此,我在代码中添加了以下行来做同样的事情。
myTextView.setMovementMethod(new ScrollingMovementMethod());
但这似乎不起作用。任何建议为什么?是不是我在 OnSwipeTouchListener 类中重写了 onFling 方法,并且 setMovementMethod 也使用相同的(onFling 方法)来实现它?