很多app有这种需求,实现字体小中大字体设置,仿照QQ的字体。经过测试,下面代码完美实现,需要重启APP才能生效。

上核心代码

public class MainActivity extends Activity {
@InjectView(R.id.btn_skip1)
Button btnSkip1;
@InjectView(R.id.btn_skip2)
Button btnSkip2;
@InjectView(R.id.btn_skip3)
Button btnSkip3;@Override
public void onCreate( Bundle savedInstanceState) {super.onCreate(savedInstanceState);int state = SpUtils.getSPValue(this,"s",1);if(state==1){setTheme(R.style.Default_TextSize_Small);}else if(state==2){setTheme(R.style.Default_TextSize_Middle);}else{setTheme(R.style.Default_TextSize_Big);}setContentView(R.layout.activity_main);ButterKnife.inject(this);
}@OnClick({R.id.btn_skip1, R.id.btn_skip2, R.id.btn_skip3})
public void onClick(View view) {switch (view.getId()) {case R.id.btn_skip1:SpUtils.putSPValue(this,"s",1);break;case R.id.btn_skip2:SpUtils.putSPValue(this,"s",2);break;case R.id.btn_skip3:SpUtils.putSPValue(this,"s",3);break;}
}}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="我是主页面"android:textSize="?font10" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="我是主页面"android:textSize="?font11" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="我是主页面"android:textSize="?font12" /><Buttonandroid:id="@+id/btn_skip1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="smallSize" /><Buttonandroid:id="@+id/btn_skip2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="normalSize" /><Buttonandroid:id="@+id/btn_skip3"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="largeSize" />
</LinearLayout>

新建attrs文件,定义字体属性

<?xml version="1.0" encoding="utf-8"?>
<resources><attr name="font10" format="dimension" /><attr name="font11" format="dimension" /><attr name="font12" format="dimension" /><attr name="font13" format="dimension" /><attr name="font14" format="dimension" /><attr name="font15" format="dimension" /><attr name="font16" format="dimension" /><attr name="font17" format="dimension" /><attr name="font18" format="dimension" /><attr name="font19" format="dimension" />
</resources>

自定义style属性

<style name="Default_TextSize_Small"><item name="font10">@dimen/font_size_9sp</item><item name="font11">@dimen/font_size_9sp</item><item name="font12">@dimen/font_size_9sp</item><item name="font13">@dimen/font_size_12sp</item><item name="font14">@dimen/font_size_13sp</item><item name="font15">@dimen/font_size_14sp</item><item name="font16">@dimen/font_size_15sp</item><item name="font17">@dimen/font_size_16sp</item><item name="font18">@dimen/font_size_17sp</item><item name="font19">@dimen/font_size_18sp</item>
</style><style name="Default_TextSize_Middle"><item name="font10">@dimen/font_size_15sp</item><item name="font11">@dimen/font_size_16sp</item><item name="font12">@dimen/font_size_17sp</item><item name="font13">@dimen/font_size_13sp</item><item name="font14">@dimen/font_size_14sp</item><item name="font15">@dimen/font_size_15sp</item><item name="font16">@dimen/font_size_16sp</item><item name="font17">@dimen/font_size_17sp</item><item name="font18">@dimen/font_size_18sp</item><item name="font19">@dimen/font_size_19sp</item>
</style><style name="Default_TextSize_Big"><item name="font10">@dimen/font_size_18sp</item><item name="font11">@dimen/font_size_18sp</item><item name="font12">@dimen/font_size_18sp</item><item name="font13">@dimen/font_size_14sp</item><item name="font14">@dimen/font_size_15sp</item><item name="font15">@dimen/font_size_16sp</item><item name="font16">@dimen/font_size_17sp</item><item name="font17">@dimen/font_size_18sp</item><item name="font18">@dimen/font_size_19sp</item><item name="font19">@dimen/font_size_20sp</item>
</style>

定义dimen文件

<dimen name="font_size_21sp">21sp</dimen>
<dimen name="font_size_20sp">20sp</dimen>
<dimen name="font_size_19sp">19sp</dimen>
<dimen name="font_size_18sp">18sp</dimen>
<dimen name="font_size_17sp">17sp</dimen>
<dimen name="font_size_16sp">16sp</dimen>
<dimen name="font_size_15sp">15sp</dimen>
<dimen name="font_size_14sp">14sp</dimen>
<dimen name="font_size_13sp">13sp</dimen>
<dimen name="font_size_12sp">12sp</dimen>
<dimen name="font_size_11sp">11sp</dimen>
<dimen name="font_size_10sp">10sp</dimen>
<dimen name="font_size_9sp">9sp</dimen>

就是这样子,谢谢阅览。有其他问题欢迎留言,也可以小小打赏一下哦,你的鼓励是我最大的进步。

邮箱:845561290@qq.com

Android设置全局字体大小,实现小中大字体功能相关推荐

  1. 博客写作小技巧【1】:如何设置字体大小、颜色和字体类型!

    目录 一. 字体大小设置 二.字体类型设置 三.字体颜色设置 四.混合使用 五.颜色表   Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容 ...

  2. android thumb大小,Android 设置thumb图片大小

    xml: android:thumb="@drawable/seekbar_thumb" seekbar_thumb.xml: 修改为: private int seekWidth ...

  3. R语言ggplot2可视化:jupyter中设置全局图像大小、jupyter中自定义单个ggplot2图像结果的大小

    R语言ggplot2可视化:jupyter中设置全局图像大小.jupyter中自定义单个ggplot2图像结果的大小 目录

  4. web(html运行)设置字体大小、样式及字体名称

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  5. android surfaceview 大小,Android设置SurfaceView任意大小、任意位置、保持预览宽高比与屏...

    Android设置SurfaceView任意大小.任意位置.保持预览宽高比与屏 Android设置SurfaceView任意大小.任意位置.保持预览宽高比与屏显一致 一.任意大小.任意位置 1) 代码 ...

  6. R语言ggplot2可视化:通过在element_text函数中设置标签字体大小列表和标签字体形式列表自定义标签可视化效果

    R语言ggplot2可视化:通过在element_text函数中设置标签字体大小列表和标签字体形式列表自定义标签可视化效果 目录

  7. typora修改主题字体、代码块字体、行内块代码字体大小、引用块字体大小、代码块背景颜色、文章可写区域宽度以及修改教程

    目录 0. 授人以渔 1.主题字体 2.代码块字体大小 3.引用块字体大小 4.代码块背景颜色 ①pink老师的样式代码 ②自己搜到的样式 5.块代码字体大小 6.修改文章可写区域的宽度 0. 授人以 ...

  8. 计算机桌面 文字大小,怎样调整电脑字体大小_怎样调整字体大小

    2017-01-08 11:04:56 桌面空白处击右键---属性---外观 然后会看到有一项:字体大小,选项有三,正常,大字体,特大字体.根据自己需要可以调整,显示框会出现预选效果.决定后,点击确定 ...

  9. native字体尺寸自适应 react_ReactNative字体大小不随系统字体大小变化而变化

    引言 在开发react-nativeApp时,相信大家都应该遇到过这样的问题:用户设置了系统的字体大小之后,导致自己的APP布局紊乱,甚至有些内容会被切掉/隐藏,这对于用户来讲,是非常不好的用户体验. ...

最新文章

  1. 关于年终奖励的扣税算法BUG
  2. 【Deep Learning】深度学习中的函数类型
  3. java 禁用迅雷_Squid使用User Agent过滤禁止迅雷
  4. 云原生应用架构转型不好做?阿里云让你一步到位!
  5. 腾讯如何打造新基建时代高可扩展的区块链引擎
  6. 阿里云RPA专有云产品文档集合
  7. Linux下搭建FTP服务器笔记
  8. Nginx+Fastdfs
  9. react文字滚动插件_【赠书】Preact(React)核心原理详解
  10. SpringCloud系列:分布式服务调用链跟踪整合Zipkin、RabbitMQ、Elasticsearch(二)
  11. OSChina 周六乱弹 —— 知道今天的乱弹为什么会迟发吗?
  12. C# 两个datatable中的数据快速比较返回交集或差集
  13. 最大弹窗_你不在意的小弹窗,为什么总是出现问题?
  14. UIST2018 ShareSpace: Facilitating Shared Use of the Physical Space by both VR Head-Mounted Display
  15. URLDecoder.decode url转码百分号问题
  16. 机器学习面试笔试求职必背!八股文(1/5)
  17. 【Numpy入门实例:图像的手绘效果】
  18. 2022基金定投数字货币理财程序源码
  19. WebStorm中TODO的作用
  20. 2300专项:D. Stressful Training(二分 充电)

热门文章

  1. MySQL多表查询之纵向合并
  2. Android自定义带标题边框的Layout
  3. 读曾鸣的《智能商业》有感
  4. 学生成绩分等级 --if形式
  5. C# OPC UA 客户端开发
  6. Software Engineering at Google翻译-III-11-Testing overview(测试概述)
  7. 券商创设认购权证分析
  8. 【WB32库开发】第12章(上)TIM1高级定时器——PWM输入捕获
  9. 同时拿到网易和微信的offer!!他是怎么做到的?
  10. 关于continue用法总结