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

    xiaoxiao2021-04-01  37

    第一步: 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);
    转载请注明原文地址: https://ju.6miu.com/read-665677.html

    最新回复(0)