如何在viewpager中添加捏缩放文本视图?

时间:2015-05-12 03:27:22

标签: android android-viewpager pinchzoom

我在TextView搜索了许多有关缩放缩放ViewPager的博客。我刚发现了许多用于缩放缩放ImageView的答案。

如何添加捏合以放大ViewPager。

以下是我在发布之前阅读的链接:

更新

@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
    if (v instanceof TouchImageView) {
        return ((TouchImageView) v).canScrollHorizontallyFroyo(-dx);
    } else {
        return super.canScroll(v, checkV, dx, x, y);
    }
}

我在if (v instanceof TouchImageView)收到错误。错误消息说,TouchImageView无法解析

1 个答案:

答案 0 :(得分:1)

创建一个私有类SimpleOnScaleGestureListener,在此活动中扩展SimpleOnScaleGestureListener

public class SimpleOnScaleGestureListener extends
        ScaleGestureDetector.SimpleOnScaleGestureListener {

    float scaleFactor;

    @Override
    public boolean onScale(ScaleGestureDetector detector) {

        scaleFactor *= detector.getScaleFactor();
        if(isTablet(getApplicationContext())){
            setFontStyleandSizeTab();
        }else{
            setFontStyleandSize();
        }
        scaleFactor = Math.max(15.0f, Math.min(scaleFactor,36.0f));
         View view=pager.getFocusedChild().findViewById(R.id.article_content)  ;
         View article_intro=pager.getFocusedChild().findViewById(R.id.article_intro)  ;

         ViewGroup group = (ViewGroup) view;
         int count=group.getChildCount();

       for(int i=0;i<count;i++){
            View child=group.getChildAt(i);
              if(child instanceof TextView){
                  TextView textView=(TextView)child;
                  textView.setTextSize(scaleFactor);

              }
           }
        return true;
    }
}

onScale内部功能我们正在做的是首先获取ScaleFactor并设置缩放文本的限制。文本化最小值 15 ,最大值 36 从下一行开始,我们在viewpager中为Textview应用缩放缩放。

View view=pager.getFocusedChild().findViewById(R.id.article_content);

首先,我通过调用pager.getFocusedChild()获取viewpager当前项目,我将获得一个linearlayout,其中包含我想要缩放的所有textviews。

您可以直接在那里传递textview ID。在运行时,我正在为这个布局添加textviews,为什么我这样跟着 如果你想在具有相同父级的时候缩放多个文本视图,那么你可以像这样跟随,或者你可以通过直接传递textview id来创建多个View实例。

textView.setTextSize(scaleFactor);

这里我正在为textview应用缩放

您必须覆盖使用viewpager检测触摸事件的方法

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {

    super.dispatchTouchEvent(ev);
    return scaleGestureDetector.onTouchEvent(ev);

}

onCreate()创建ScaleGestureDetector实例,如下所示:

scaleGestureDetector = new ScaleGestureDetector(this, new simpleOnScaleGestureListener());

现在,您可以在viewpager中应用平滑缩放。