Android设置全局字体大小解决方案

    今天是中秋,中秋还在研究代码的都比较苦逼,先Mark一下。
    App中要用到字体大小设置,网上有很多文章。但百度,google了半天,对我来说,只有以下两篇有帮助,先附上链接:
    http://blog.sina.com.cn/s/blog_3e333c4a0101igti.html;
    http://blog.codecalculated.com/2013/07/09/dynamic-font-size-and-other-styles-in-an-android-app/
    一篇中文,一篇英文。大家可以去看看。中文这篇讲的就比较通用,但是博主讲的不是很清楚,我琢磨了一阵才明白。于是决定将自己理解的分享出来,以做记录。
    如果你的app中要用到多种字体大小,那么就需要先自己定义一些属性。新建attr.xml资源文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="fontsize_1" format="dimension"></attr>
    <attr name="fontsize_2" format="dimension"></attr>
    <attr name="fontsize_3" format="dimension"></attr>

</resources>
    这里定义了三种字体大小,有需要可以再继续添加。
    然后,我们需要在styles.xml里面继续定义:
<!-- 设置字体大小 theme -->
    <style name="Theme_Small">
        <item name="fontsize_1">15sp</item>
        <item name="fontsize_2">10sp</item>
        <item name="fontsize_3">8sp</item>
    </style>
    <style name="Theme_Medium">
        <item name="fontsize_1">25sp</item>
        <item name="fontsize_2">20sp</item>
        <item name="fontsize_3">15sp</item>
    </style>
    <style name="Theme_Large">
        <item name="fontsize_1">45sp</item>
        <item name="fontsize_2">30sp</item>
        <item name="fontsize_3">25sp</item>
    </style> 

    <!-- 为相应的控件设置style -->
    <style name="title_text">
        <item name="android:textSize">?@attr/fontsize_1</item>
    </style>
    <style name="subtitle_text">
        <item name="android:textSize">?@attr/fontsize_2</item>
    </style>
    <style name="article_text">
        <item name="android:textSize">?@attr/fontsize_3</item>
    </style>
    如上所示,我建立了三个控制字体大小的theme:Theme_Small、Theme_Medium、Theme_Large,每个theme里都对attr里自定义的属性值进行了赋值。然后又对需要变更文字大小的控件设立相应的style:title_text、subtitle_text、article_text,在layout xml文件中将控件设置对应的style即可。如我的布局是这样的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        style="@style/title_text" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是一行测试用字"/>
    <TextView 
        style="@style/subtitle_text" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是一行测试用字"/>
    <TextView 
        style="@style/article_text" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="这是一行测试用字"/>

</LinearLayout>
    最后,在activity里setContentView之前设置主题即可:
@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        int mode=-1;
        try{
            mode=getIntent().getIntExtra("textsize", 1);
        }catch(NullPointerException e){
            e.printStackTrace();
        }catch (Exception e) {

        }
        if(mode==-1||mode==1){
            this.setTheme(R.style.Theme_Small);
        }else if(mode==2){
            this.setTheme(R.style.Theme_Medium);
        }else {
            this.setTheme(R.style.Theme_Large);
        }
        setContentView(R.layout.activity_showtext);
    }
    大家在使用的时候可以设置一个基类BaseActivity,并通过sharedpreferenes保存相应的设置值,来对全局字体进行设置。

附上Demo供大家参考,下载链接:
http://download.csdn.net/download/mrwangxsyz/9142853

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以在app.wxss文件设置全局字体大小,例如: ```css /* app.wxss */ :root { --font-size: 28rpx; /* 定义全局字体大小 */ } /* 将全局字体大小应用到所有元素 */ * { font-size: var(--font-size); } ``` 然后在其他页面的wxss文件使用`var(--font-size)`引用全局字体大小即可。如: ```css /* page.wxss */ .title { font-size: calc(var(--font-size) * 2); /* 使用全局字体大小的两倍作为标题字体大小 */ } ``` ### 回答2: 微信小程序可以通过修改全局样式的方式设置全局字体大小。 首先,在小程序的app.wxss文件添加如下样式代码: ``` :root { --font-size: 16px; /* 设置默认字体大小 */ } ``` 然后,在需要使用的页面的wxss文件,使用var()函数来引用全局字体大小: ```css .text { font-size: var(--font-size); } ``` 这样,通过修改app.wxss的--font-size变量的值,可以轻松地改变全局字体大小。 同时,如果需要允许用户自定义字体大小,可以通过小程序的设置页面,将用户选择的字体大小存储在本地缓存。然后,在app.js的onLaunch方法读取缓存的字体大小,并动态修改--font-size变量的值。 ```javascript App({ onLaunch: function() { // 从缓存获取字体大小 var fontSize = wx.getStorageSync('fontSize'); // 如果缓存存在,设置全局字体大小 if (fontSize) { wxss变量的值 = fontSize; // 将缓存字体大小赋值给变量 } } }) ``` 以上就是设置微信小程序全局字体大小的方法,通过修改全局样式的方式,可以快速地实现字体大小统一调整,并允许用户自定义字体大小。 ### 回答3: 要设置微信小程序的全局字体大小,可以按照以下步骤进行操作: 1. 在app.json文件,找到"window"字段,并添加一个"fontSize"属性,用来设置全局字体大小。例如,可以设置为"fontSize": 16,代表全局字体大小为16像素。 2. 在app.wxss文件,可以使用"rpx"作为单位来设置样式字体大小。根据设置全局字体大小,其他页面字体大小也会相应改变。例如,可以在样式设置".text { font-size: 32rpx; }",代表字体大小全局字体大小的2倍。 3. 可以在需要的地方进行局部字体大小的调整。通过在对应的页面wxss文件或组件wxss文件,单独设置某一部分的字体大小,覆盖全局字体大小的设定。例如,在某个页面的wxss文件设置".special-text { font-size: 24rpx; }",就可以将特定部分的字体大小设置全局字体大小的1.5倍。 4. 如果需要在不同的页面设置不同的全局字体大小,可以在app.json文件的"pages"字段,对每个页面进行单独的配置。例如,可以设置"pages": ["pages/index/index", "pages/detail/detail"],然后在每个页面的json文件,添加对应的全局字体大小设置。 5. 除了以上方法,还可以使用动态设置字体的方式,在页面的生命周期函数,通过调用API来动态修改字体大小。例如,在页面的onLoad函数,使用wx.setNavigationBarTitle()函数来设置导航栏的字体大小。 综上所述,以上是设置微信小程序全局字体大小的几种方法。可以根据需求选择适合的方法来进行设置

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值