Java 带有滚动条的TextView,可处理onTouchEvents

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

我在Android 2.3.3上处理我的
TextView
中的触摸事件时遇到问题。我用方法实现了Activity
OnTouchListener

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);
    }