关于在宿主activity中设置按钮,动态控制viewPager中的字体的大小的设置,在答题项目中遇到,在此做记录,方便日后学习,改进。

第一步:
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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值