我是靠谱客的博主 虚心猎豹,最近开发中收集的这篇文章主要介绍Android 实现新闻客户端字号设置的几种方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

</pre>公司有个类似新闻客户端的项目到了后期,需要增加需求需要设置大中小三种字号可供选择设置。<p></p><p></p><p>在网上找了资料,列出几种实现方法:</p><p>1.利用Activity生命周期,在Onresume里面遍历View去实现。</p><p>2.利用广播通知,然后遍历View去实现</p><p></p><p>这里列出获取当前Activity中最外侧View的方法:</p><p></p><pre name="code" class="java">public static ViewGroup getLayoutForActivity(Activity activity) {
		return (ViewGroup) activity.findViewById(android.R.id.content);
	}


我考虑了一下遍历View这种方法,因为是项目后期修改,遍历所有的View 没有办法给具体的View去设置字号,可以给当前字号加一点减一点来解决这个问题,但是切换后的效果肯定不会太好。


这里给出另外一种方法:

下面是实现思路

用样式和Activity生命周期实现这个功能。

在style种样式定义不同的字号(注:也可自定义属性,用android:textSize 改变的只是默认字号)

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:textSize">16dp</item>
    </style>
    <!-- Application theme. -->
    <style name="AppTheme1" parent="AppBaseTheme">
          <item name="android:textSize">25dp</item>
    </style>
    <!-- Application theme. -->
    <style name="AppTheme2" parent="AppBaseTheme">
          <item name="android:textSize">13dp</item>
    </style>

在样式中这样定义字号:

  android:textSize="?android:attr/textSize"

在App中定义三种字号模式。

	//字号(小)
	public static final int TEXTMODE_SAMLL = -1;
	//字号(中)
	public static final int TEXTMODE_NORMAL = 0;
	//字号(大)
	public static final int TEXTMODE_BIG = 1;
	public static int TEXTMODEL = TEXTMODE_NORMAL;

在每个ActivityOnCreate的时候记录下当前Activity的的字号模式,

	textModle = SysConfigeUtil.TEXTMODEL;

切换字号模式

		switch (item.getItemId()) {
		case R.id.big:
			SysConfigeUtil.TEXTMODEL = SysConfigeUtil.TEXTMODE_BIG;
			SysConfigeUtil.reload(this);
			break;
		case R.id.normal:
			SysConfigeUtil.TEXTMODEL = SysConfigeUtil.TEXTMODE_NORMAL;
			SysConfigeUtil.reload(this);
			break;
		case R.id.small:
			SysConfigeUtil.TEXTMODEL = SysConfigeUtil.TEXTMODE_SAMLL;
			SysConfigeUtil.reload(this);
			break;

		default:
			break;
		}
//SysConfigeUtil.reload(this);// 可用recreate(); 替换掉

在Android 3.0以后,Activity提供了重启Activity的方法onReCreate方法,这个方法只能在top-level的时候使用,也就是说Activity在栈顶的时候调用。

所以要在onResume中重新设置样式

	if (textModle != SysConfigeUtil.TEXTMODEL) {
			SysConfigeUtil.reload(this);
		}


Demo链接:http://download.csdn.net/detail/liuyaoyue/8083875


记得还有一种方法是在Manifest文件中设置Activity的onConfigChanged属性为fontScane,具体怎么搞我也忘记了,如果有知道的请告诉我下~


修改: 上面的方法(重启Activity的方法会导致黑屏,求解决方案)







最后

以上就是虚心猎豹为你收集整理的Android 实现新闻客户端字号设置的几种方法的全部内容,希望文章能够帮你解决Android 实现新闻客户端字号设置的几种方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部