Java 带有滚动条的TextView,可处理onTouchEvents
我在Android 2.3.3上处理我的Java 带有滚动条的TextView,可处理onTouchEvents,java,android,scrollbar,touch-event,Java,Android,Scrollbar,Touch Event,我在Android 2.3.3上处理我的TextView中的触摸事件时遇到问题。我用方法实现了ActivityOnTouchListener main.java public boolean onTouchEvent(MotionEvent event) { if(event.getPointerCount()==1){ textView.setTextSize(mRatio+13); mRatio++; Log.d("Tou
TextView
中的触摸事件时遇到问题。我用方法实现了ActivityOnTouchListener
main.java
public boolean onTouchEvent(MotionEvent event) {
if(event.getPointerCount()==1){
textView.setTextSize(mRatio+13);
mRatio++;
Log.d("TouchEvent", "one touch !");
}
if (event.getPointerCount() == 2) {
some code...
}
return true;
}
和我的布局(仅部分):
当我“点击”文本框外的任何地方(例如页眉或页脚)时,触摸事件触发,字体变大。我想问题可能是因为滚动条。但当我切断android:scrollbars=“vertical”bar时,它就消失了
此文本视图通常包含大量文本
如何在此文本视图中正确设置通风口
编辑:
当这个文本视图很小时,我的touchEvent工作,直到我得到如此大的文本,而不是需要滚动条。然后所有触摸事件都被覆盖,您只能滚动文本视图。不调用TouchEvent。我假设您的TextView位于某种滚动视图或可滚动容器中,对吗 那你就要面对这个问题。Android不喜欢他的苹果和梨混合,你不应该试图接收“onTouch”事件,这些事件正被视图顶部的父布局所消耗 我想你可以: a) 切换到TextView上的onClickListener b) 覆盖父视图布局触摸处理程序,以将触摸向下排放到其子对象。这并不是100%的建议,可能会导致不必要的行为
如果我不能提供更多帮助,很抱歉。我用其他方式处理这个问题。OnTouchEvent无法与我的TextView一起使用,因此我覆盖dispatchTouchEvent。更好的做法是执行“onTouch”操作。滚动条工作正常,我可以在整个屏幕上添加我的多点触控事件。它看起来像:
@Override
public boolean dispatchTouchEvent(MotionEvent motionEvent){
Log.v("NotificationActivity.dispatchTouchEvent()", "got touch");
if (motionEvent.getPointerCount() == 2) {
Log.v("touch", "multi touch !");
int action = motionEvent.getAction();
int pureaction = action & MotionEvent.ACTION_MASK;
// some actions ...
}
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:{
//Keep track of the starting down-event.
Log.v("akcjaa","down");
// some actions ...
break;
}
case MotionEvent.ACTION_UP:{
//Consume if necessary and perform the fling / swipe action
//if it has been determined to be a fling / swipe
Log.v("akcjaa","up");
break;
}
}
return super.dispatchTouchEvent(motionEvent);
}
@Override
public boolean dispatchTouchEvent(MotionEvent motionEvent){
Log.v("NotificationActivity.dispatchTouchEvent()", "got touch");
if (motionEvent.getPointerCount() == 2) {
Log.v("touch", "multi touch !");
int action = motionEvent.getAction();
int pureaction = action & MotionEvent.ACTION_MASK;
// some actions ...
}
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:{
//Keep track of the starting down-event.
Log.v("akcjaa","down");
// some actions ...
break;
}
case MotionEvent.ACTION_UP:{
//Consume if necessary and perform the fling / swipe action
//if it has been determined to be a fling / swipe
Log.v("akcjaa","up");
break;
}
}
return super.dispatchTouchEvent(motionEvent);
}