如何通过点按视图顶部或视图底部来启用全屏幕文本视图页面并向下翻页?
我尝试在textview的顶部和底部使用向上翻页和向下翻页按钮,但这是浪费的空间。
如果textview是只读的,点击视图的顶部或底部应该允许我翻页或向下翻阅内容。
提前感谢任何建议 迪安-O
答案 0 :(得分:0)
您需要在视图中添加OnTouchListener。然后您将获得触摸方法中传递的MotionEvent中点击视图的坐标。您可以通过在触摸方法中调用GestureDetector来判断它是否是点击。了解坐标和手势后,您可以适当地滚动视图。
您可以在构造函数中使用GestureDetector.SimpleOnGestureListener作为GestureListener,只需覆盖onSingleTapConfirmed方法并根据需要进行滚动。
如果您使用手势,请务必返回true。还要确保传递GestureDetector的结果。
编辑: 如果你想要更简单的东西,你可以在视图顶部浮动两个不可见的视图,并让他们的点击进行滚动。
编辑2:要实现向上翻页和向下翻页,您需要将TextView放在ScrollView内,并按页面长度滚动视图。如果您想通过滑动或拖动来禁用常规滚动,您可以创建一个自定义视图来扩展滚动视图并覆盖其onInterceptTouchevent方法
编辑3:在评论中查看您的代码,我看到您正在使用MovementMethod进行滚动。如果您希望这样做,则必须创建自定义BaseMovementMethod。它的这种方法导致滚动。您可以覆盖其ontouchevent以实现页面向上和向下翻页。你不需要看不见的观点。我以前没有意识到这个课程,现在看到这可能是最好的方法。只需创建一个这样的类:
import android.text.Spannable;
import android.text.method.BaseMovementMethod;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.TextView;
public class PagingMovementMethod extends BaseMovementMethod{
private final GestureDetector gestureDetector=new GestureDetector(new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return super.onSingleTapConfirmed(e);
}
});
@Override
public boolean onTouchEvent(TextView widget, Spannable text, MotionEvent event) {
boolean singleTap= gestureDetector.onTouchEvent(event);
if(singleTap){
if(event.getX()<widget.getHeight()/2){
pageUp(widget,text);
}else {
pageDown(widget,text);
}
}
return singleTap;
}
}
如果将其指定给TextView,它应该可以在没有任何其他视图的情况下工作。
答案 1 :(得分:0)
只需创建具有透明背景的2 Buttons
,然后将它们放在顶部和底部。这是最简单的解决方案。