在Android布局中进行使用到空格,以便实现文字的对齐。那么在Android中如何表示一个空格呢?

  • 空格: 
  • 窄空格:‒

一个汉字宽度的空格:  ‒;【用两个空格(  )占一个汉字的宽度时,两个空格比一个汉字略窄,三个空格(   )比一个汉字略宽】

在实际使用中需要灵活使用 和 的组合。

android:text="真实姓名:"

android:text="身    证:"

android:text="姓  ‒名:"

android:text="身份证:" 

TextView实现首行缩进的方法:

  • 在string资源文件中,在文字的前面加入”\u3000\u3000”即可实现首行缩进
  • 在Java代码中,使用setText("\u3000\u3000"+xxxxx);

以上转载自https://blog.csdn.net/u014651216/article/details/52411113

这么写有一个问题,我在使用  ‒时候部分机型转译虎不是空格,而是“-”。

又发一种形式  半个中文字更准确点,  一个中文字但用起来会比中文字宽一点点。 所以中文对齐还是建议使用 , 而   在不同机型有不同表现

这种形式只适用于半个字符拼接。如果不是半个就不行了。只能自己计算字符宽度

常見一個工具类AlignedTextUtils,使用时直接

SpannableStringBuilder retailName = AlignedTextUtils.justifyString("身份证", 4);retailName.append(":");tvName.setText(retailName);
public class AlignedTextUtils {    private static int n = 0;// 原Str拥有的字符个数    private static SpannableString spannableString;    private static double multiple = 0;// 放大倍数    /**     * 对显示的字符串进行格式化 比如输入:出生年月 输出结果:出正生正年正月     */    public static String formatStr(String str) {        if (TextUtils.isEmpty(str)) {            return "";        }        str = ToSBC(str);        n = str.length()-1;        if (n >= 4) {            return str;        }        StringBuilder sb = new StringBuilder(str);        for (int i = n - 1; i > 0; i--) {            sb.insert(i, "正");        }        return sb.toString();    }    /**     * 对显示字符串进行格式化 比如输入:安正卓正机正器正人 输出结果:安 卓 机 器 人     *     * @param str     * @return     */    public static SpannableString formatText(String str) {        if (TextUtils.isEmpty(str)) {            return null;        }        str = formatStr(str);        if (str.length() <= 4) {            return null;        }        spannableString = new SpannableString(str);        switch (n) {            case 3:                multiple = 0.3333333333333333333333333333333333;                break;            default:                break;        }        for (int i = 1; i < str.length()-1; i = i + 2)        {            spannableString.setSpan(new RelativeSizeSpan((float) multiple), i, i + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);            spannableString.setSpan(new ForegroundColorSpan(Color.TRANSPARENT), i, i + 1,  Spanned.SPAN_INCLUSIVE_EXCLUSIVE);        }        return spannableString;    }    /**     转全角的方法(SBC case)

全角空格为12288,半角空格为32 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 * @param input 任意字符串 * @return 半角字符串 * */ public static String ToSBC(String input) { //半角转全角: char[] c=input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i]==32) { c[i]=(char)12288; continue; } if (c[i]<127) c[i]=(char)(c[i]+65248); } return new String(c); } public static SpannableStringBuilder justifyString(String str, int num) { SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(); if (TextUtils.isEmpty(str)) { return spannableStringBuilder; } char[] chars = str.toCharArray(); if (chars.length >= num || chars.length == 1) { return spannableStringBuilder.append(str); } int l = chars.length; float scale = (float) (num - l) / (l - 1); for (int i = 0; i < l; i++) { spannableStringBuilder.append(chars[i]); if (i != l - 1) { SpannableString s = new SpannableString(" ");//全角空格 s.setSpan(new ScaleXSpan(scale), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannableStringBuilder.append(s); } } return spannableStringBuilder; }}

 

更多相关文章

  1. Android(安卓)Process 'command 'C:\Users\Win\AppData\Loca
  2. Android(安卓)Python 终端上使用python
  3. Android中汉字转拼音的内存优化处理
  4. 更改Android编译时的默认配置
  5. Android下jni开发之ndk的使用(下载、配置、编译遇到的问题)
  6. Android(安卓)APK签名
  7. Android汉字转拼音HanziToPinyin实测可用版
  8. android 单个模块编译
  9. android String与HTML的相互转换

随机推荐

  1. Android(安卓)开发IDE之(Eclipse 和 Andro
  2. Android程序开发初级教程
  3. android mediaplayer 播放 视频 【转】
  4. 详解 Android(安卓)的 Activity 组件
  5. Android软件如何自动升级
  6. android bluetooth开发基础-1
  7. 使用Docker编译Android系统内核
  8. Android其它新控件
  9. Android(安卓)服务器推送技术
  10. Eclipse 下配置Ionic 开发Android