2013-10-04 1 views
0

Android 2.3.3에서 내 TextView 내에서 Touch 이벤트를 처리하는 데 문제가 있습니다. 나는 활동 방법 OnTouchListener를 구현하고있어onTouchEvents를 처리 할 수있는 스크롤 막대가있는 TextView

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

내 레이아웃 (그 부분 만) : 난 아무데도 내 텍스트 상자 밖에서 '클릭'

<LinearLayout android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" 
        android:layout_weight="1.0" 
        android:fadingEdge="none" 
        android:background="@color/white"> 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:layout_margin="10dp"> 

      <!-- TEXT EMAIL : --> 
      <TextView 
       android:id="@+id/mail_text" 
       android:layout_height="wrap_content" 
       android:layout_width="fill_parent" 
       android:textSize="15sp" 
       android:autoLink="web" 
       android:clickable="true" 

       android:textColor="@color/mailtext" 
       android:scrollbars = "vertical"/> 

     </LinearLayout> 

    </LinearLayout> 

(예 : 머리글 또는 바닥 글), Touch 이벤트 트리거, 글꼴이 커집니다. 문제는 아마 스크롤바 때문이라고 생각합니다. 그러나 내가 android:scrollbars = "vertical" 막대를 자르면 사라집니다.

이 textView는 대개 많은 텍스트를 포함합니다.

이 텍스트 뷰 내에서 onTouchEvents를 올바르게 실행하는 방법.

편집 : 이 textView가 작 으면 touchEvent가 작아 져서 scrollBar가 필요한 텍스트를 얻을 수 있습니다. 그런 다음 모든 터치 이벤트가 무시되고 textView 만 스크롤 할 수 있습니다. TouchEvent가 호출되지 않습니다.

답변

1

다른 방법으로 문제를 처리합니다. 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); 
    } 
0

TextView가 일종의 ScrollView 또는 Scrollable 컨테이너 안에 있다고 가정합니다. 맞습니까?

그러면이 문제가 발생합니다. 안드로이드는 그의 사과와 배가 섞이지 않는 것을 좋아하지만보기 상단의 아버지 레이아웃에 의해 소비되는 "onTouch"이벤트를 받아서는 안됩니다.

은 당신이 할 수 추측하십시오 OnClickListener를에

A) 스위치를 당신의 텍스트 뷰

B)의 차일 아래로 터치를 피하도록 부모 뷰 레이아웃 터치 핸들러를 오버라이드 (override)에. 이것은 실제로 100 % 권장되지 않으며 원하지 않는 동작을 유발할 수 있습니다.

죄송합니다. 도움이 될 수 없다면 죄송합니다.

+0

이 경우에는 작동하지 않습니다. –

관련 문제