Android 自定义字体中英文混合后导致页边距不对的解决方案
来源:互联网 发布:刺客软件 编辑:程序博客网 时间:2024/05/16 07:09
在APP中需要用到自定义的字体包,这里顺便插一下自定义字体的实现方法:
/** * 自定义字体 * * @param context * @param fontPath 字体路径 * @return */ public static void customFont(Context context, String fontPath, TextView textView) { textView.setTypeface(Typeface.createFromAsset(context.getAssets(),"fonts/字体.ttf")); }
步入正题,因为自定义字体与android的原生字体包兼容性不高导致当字体再TextView中显示的时候即时设置了gravity为居中,但中文字体全部偏上,具体现象见下图
解决方案:
既然不能用控件属性去控制页边距,那么只能通过代码手段去判断设置了,我在这里开始判断输入的字符串是否包含有中文字符,如果有则用代码去自定义控件位置,当检测到全部都是英文字母时则跳过设置,代码如下:
/** * 传入的str包含中文字符时设置文字的上边距,以保证文字都居中 * @param str */ private void setChineseWordMargins(String str) { DisplayMetrics dm = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); // 由于测试机在720*1280的屏幕分辨率下距离15px刚刚居中,为了适配其他屏幕需要计算一下各个屏幕的实际距离 int actualTopMargin = 15 * dm.heightPixels / 1280; RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) tvSpinnerTitle.getLayoutParams(); if (isChinease(str)) { lp.topMargin = actualTopMargin; } else { lp.topMargin = 0; } tvSpinnerTitle.setLayoutParams(lp); } /** * 判断字符串中是否包含中文字 * * @param str * @return */ public static boolean isChinease(String str) { String regEx = "[\\u4E00-\\u9FA5]+"; // 正则表达式 Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(str); if (m.find()) { return true; } else { return false; } }
这样就解决了显示问题。
0 0
- Android 自定义字体中英文混合后导致页边距不对的解决方案
- VS2010解决方案位置不对和改变程序字体的方案
- android联系人中英文混合排序
- android下中英文混合排序
- 关于Textview maxline=1 ellipsize="end" 导致中英文数字混合分割错误的问题
- 关于Textview maxline=1 ellipsize="end" 导致中英文数字混合分割错误的问题
- IE7中英文混合文本的字体样式控制问题,使用js解决
- 安卓设置自定义字体的解决方案
- R画图中英文字体完美解决方案
- 今天 重装 mindmanager9 的时候,由于语言设置后, 导致eclipse编码不对而产生乱码
- 动态Static文本导致字体重叠的解决方案
- 移动端字体放大导致布局错乱的解决方案
- android开发中使用sp为字体单位,调整系统字体大小后影响布局的解决方案
- textView 中英文混排导致的自动换行出现的混乱的解决方案
- Android按名称排序,中英文混合排序
- timer中断代码不对导致的错误
- ubuntu11.10字体显示不对的问题
- Android Handler导致内存泄漏的解决方案
- hibernate一级缓存和二级缓存的区别
- IBM aix资料
- C++语言体系设计哲学的一些随想
- html中子页面给父页面赋值,关闭子页面给父页面传值,父页面条件按子页面设置查询
- 自定义属性
- Android 自定义字体中英文混合后导致页边距不对的解决方案
- myeclipse乱码问题
- LeetCode_Add Two Numbers
- 关于linux中字符设备驱动程序的设计
- Hibernate 枚举
- 使用maven创建web项目
- hdu 1892 See you~
- Binary Tree Preorder Traversal
- matlab中的xcorr 自相关函数(转)