2013-11-22 4 views
1

Большое вам спасибо за чтение. У меня есть textView, что вы можете ущипнуть масштаб, и когда я добавлю "textview.setMovementMethod(new ScrollingMovementMethod());" в свой код, я также могу прокрутить увеличенное текстовое изображение, которое именно то, что мне нужно. Проблема заключается в том, что как только текст будет увеличен, только прокрутка будет работать, но масштабирование зума больше не работает (если я не поместил один из моих пальцев вне текста, а другой внутри). Любая помощь будет действительно оценена. Я получил код отсюда: Pinch Zooming TextViewsetMovementMethod (прокрутка) вмешивается в scaleGestureDetector (масштабирование) в textView

import android.os.Bundle; 
import android.app.Activity; 
import android.util.Log; 
import android.util.TypedValue; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.ScaleGestureDetector; 
import android.view.ScaleGestureDetector.SimpleOnScaleGestureListener; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    TextView scaleGesture; 
    ScaleGestureDetector scaleGestureDetector; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     scaleGesture = (TextView)findViewById(R.id.article); 
     scaleGesture.setText("this is some text"); 
     scaleGestureDetector = new ScaleGestureDetector(this, new simpleOnScaleGestureListener()); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 


    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     // TODO Auto-generated method stub 
     scaleGestureDetector.onTouchEvent(event); 
     return true; 
    } 

    public class simpleOnScaleGestureListener extends 
      SimpleOnScaleGestureListener { 

     @Override 
     public boolean onScale(ScaleGestureDetector detector) { 
      // TODO Auto-generated method stub 
      float size = scaleGesture.getTextSize(); 
      Log.d("TextSizeStart", String.valueOf(size)); 

      float factor = detector.getScaleFactor(); 
      Log.d("Factor", String.valueOf(factor)); 


      float product = size*factor; 
      Log.d("TextSize", String.valueOf(product)); 
      scaleGesture.setTextSize(TypedValue.COMPLEX_UNIT_PX, product); 

      size = scaleGesture.getTextSize(); 
      Log.d("TextSizeEnd", String.valueOf(size)); 
      return true; 
     } 
    } 
}` 

ответ

2

Я просто решить эту проблему (на том же примере) добавить только один «если» в моем коде:

@Override 
    public boolean onTouchEvent(MotionEvent event) { 
     // get how many fingers is in touch (in that case, if are more 
     // than 1, the user don't want do the scroll 
     if (event.getPointerCount() > 1) { 
      scaleGestureDetector.onTouchEvent(event); 
      return true; 
     } 
     return false; 
    }