在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;        }    }

这样就解决了显示问题。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)keep screen on 方法
  3. 王立平--include在Android应用
  4. android imageview设置图片的小问题
  5. android 将文字转为为图片
  6. android 使用icon进行字符编码转换
  7. android studio apk打包命名规范
  8. Android(安卓)3 开始 Activity MainThread中不能执行http通信了
  9. [Android]http请求

随机推荐

  1. 排序算法 #1 选择排序(文字版)
  2. 一道 LeetCode 周赛的题目,让我自信满满!
  3. 每日前端夜话(0x03):2018年JavaScript状态
  4. 假期玩得开心也不忘充电,学习Python操作JS
  5. 使用Redis有哪些好处?
  6. 排序算法 #2 冒泡排序
  7. GlusterFs 启动报错,调试方法和处理
  8. FreeMarker 概述
  9. 有了Python,我能叫出所有猫的名字
  10. Android(安卓)Studio查看Android(安卓)5.