2015-06-21 18 views
0

代碼如下。我擴展了TextView並超越了它的onTouchEvent方法。我想將整個TextView(不是文本本身)左右移動。 以下代碼種類的作品,但它只能讓我移動大約0.5釐米的TextView,並且比我得到ACTION_CANCEL事件。 TextView寬204dp。 任何人都可以給我一些線索爲什麼發生這種情況?謝謝。移動TextView時得到了ACTION_CANCEL

package com.zhangfuwen.tenkhours; 
import android.content.Context; 
import android.util.Log; 
import android.view.MotionEvent; 
import android.widget.Button; 
import android.widget.TextView; 
import android.util.AttributeSet; 



/** 
* Created by dean on 2015/6/20. 
*/ 
public class MyTextView extends TextView { 
private int mHistoricalX; 
public MyTextView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    float x = event.getX(); 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      mHistoricalX = (int)x; 
      Log.e("haha", "down."); 
      return true; 
      //break; 
      //return super.onTouchEvent(event); 
     case MotionEvent.ACTION_MOVE: 
      Log.e("haha", "move."); 
      float diff = x - mHistoricalX; 
      this.setX(this.getX() + diff); 
      invalidate(); 
      return true; 
      //super.onTouchEvent(event); 
      //return true; 
     case MotionEvent.ACTION_UP: 
      //TODO:啓動定時器,進行倒計時 
      // 
      Log.e("haha", "up."); 
      diff = x - mHistoricalX; 
      this.setX(this.getX() + diff); 
      return true; 
      //break; 
     case MotionEvent.ACTION_OUTSIDE: 
      Log.e("haha","outside"); 
      return true; 
     case MotionEvent.ACTION_CANCEL: 
      Log.e("haha","cancel"); 
      return false; 
     case MotionEvent.ACTION_HOVER_MOVE: 
      Log.e("haha","hover move"); 
      return true; 

      //} 
      //return super.onTouchEvent(event); 
     default: 
      Log.e("haha","action is " + Integer.toString(event.getAction())); 
      return true; 
      //break; 


    } 
    //return super.onTouchEvent(event); 
} 

}

回答

0

得到它固定。 我的主要活動是負責滑動操作的ViewPager。 當我移動TextView時,ViewPager會佔有該事件。 爲了解決這個問題,我按照this的問題重寫了ViewPager。