我在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
无法解析
答案 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中应用平滑缩放。