第一步:
private ImageView iv_change_text_size_; //控制缩小图标
private ImageView iv_change_text_size; //控制放大的图标
private float size_ = 60f; //初始字体的大小(此处觉得屏幕适配是时候学习了)
private int pos; // 获取viewPager的当前位置的变量,防止改变字体大小重新newadapter时候造成的重回第一个view页面
第二部:
在第一次newadapter时候用setOnPageChangeListener滚动监听pos = arg0;将当前位置记录并赋值给全局变量,并将当前size_传递过去
adapter = new AnswerQuedtionAdapter(AnswerQuestionActivity.this, viewList, res, size_);
viewPager.setAdapter(adapter);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int arg0) {
pos = arg0;
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
viewPager.setCurrentItem(0);
第三步:放大点击事件,和缩小的点击事件
iv_change_text_size.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// float scle = getResources().getDisplayMetrics().scaledDensity;
// float size = tv_question.getTextSize();
if (size_ <= 80){
size_ += 2; // 单次点击使得字体加2
// 重新new一次adapter,将新的size_传过去
adapter = new AnswerQuedtionAdapter(AnswerQuestionActivity.this, viewList, res , size_);
viewPager.setAdapter(adapter);
L.d("pos",pos+">>>>>>>>>>>>>>>>>>>>>>>>");
// 设置viewPager到当前页面
viewPager.setCurrentItem(pos);
}
// 保存设置的值
SPUtils.put(AnswerQuestionActivity.this, "size_", size_);
}
});
// 缩小点击事件
iv_change_text_size_.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (size_ >= 60){
size_ -= 2;
adapter = new AnswerQuedtionAdapter(AnswerQuestionActivity.this, viewList, res , size_);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(pos);
}
SPUtils.put(AnswerQuestionActivity.this, "size_", size_);
}
});
第四步:进入adapter中,获取传递过来地size_
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
// (据说这是用来获取屏幕适配相关的)
float scle = context.getResources().getDisplayMetrics().scaledDensity;
final ViewHolder holder = new ViewHolder();
converView = viewList.get(position);
holder.tv_question = (TextView) converView.findViewById(R.id.tv_question);
// 设置字体大小
holder.tv_question.setTextSize(size/scle);