概述
</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);
}
这里给出另外一种方法:
下面是实现思路
用样式和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);
}
记得还有一种方法是在Manifest文件中设置Activity的onConfigChanged属性为fontScane,具体怎么搞我也忘记了,如果有知道的请告诉我下~
修改: 上面的方法(重启Activity的方法会导致黑屏,求解决方案)
最后
以上就是虚心猎豹为你收集整理的Android 实现新闻客户端字号设置的几种方法的全部内容,希望文章能够帮你解决Android 实现新闻客户端字号设置的几种方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复