【问题标题】:setMovementMethod (Scrolling) interferes with scaleGestureDetector (zooming) in a textViewsetMovementMethod(滚动)干扰 textView 中的 scaleGestureDetector(缩放)
【发布时间】:2013-11-22 07:35:52
【问题描述】:

非常感谢您的阅读。我有一个可以缩放的 textView,当我将 "textview.setMovementMethod(new ScrollingMovementMethod());" 添加到我的代码中时,我还可以滚动缩放的 textview,这正是我所需要的。问题是,一旦文本被缩放,只有滚动起作用,但捏缩放不再起作用,(除非我将一个手指放在 textview 之外,另一个放在里面)。任何帮助将不胜感激。我从这里得到代码:Pinch Zooming 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;
        }
    }
}`

【问题讨论】:

    标签: java android scroll textview zooming


    【解决方案1】:

    我只是解决了这个问题(用同样的例子)我的代码中只添加了一个“if”:

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

    【讨论】:

      猜你喜欢
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多