TextView设置内容截取长度,区分中英文

刚拿到需求,需要给TextView设置文本显示的长度

我想这还不简单么,直接设置maxLength= “xx” 不就可以了

后来产品看过效果说需要区分中英文字符,假如全是汉字显示8个,那么英文字母就应该显示16个

呃。。。这也好说,我记得有一个属性就是区分中英文字符的,把maxLength属性改为maxEms= “xx” ,这下没问题了吧!

谁知产品看过后还说不行,换成maxEms属性,当内容超过规定的长度时,会在后面自动加上…,这样的效果也不行

呃。。。好吧,我再看看TextView还有没有其它可取的属性可以设置的

搭配了N种方式,最后发现都不能通过设置属性来控制文本显示的长度,看来只有从内容上下手了,通过JAVA的字符截取来控制文本内容的长度

    /**
     * 截取字符长度,区分中英文
     *
     * @param abc 字符串内容
     * @param len 截取长度
     * @return
     */
    public static String subStr(String abc, int len) {
        if (TextUtils.isEmpty(abc) || len <= 0)
            return "";
        StringBuffer stringBuffer = new StringBuffer();
        int sum = 0;
        char[] chars = abc.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            if (sum >= (len * 3)) {
                break;
            }
            char bt = chars[i];
            if (bt > 64 && bt < 123) {
                stringBuffer.append(String.valueOf(bt));
                sum += 2;
            } else {
                stringBuffer.append(String.valueOf(bt));
                sum += 3;
            }
        }
        return stringBuffer.toString();
    }

这下完美解决了,快快收藏起来吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中,可以使用 `android:gravity` 和 `android:textAlignment` 属性来设置文本内容在 `TextView` 中的位置。这两个属性都可以用来控制文本内容在水平和垂直方向上的位置。 `android:gravity` 属性用于控制文本内容相对于 `TextView` 的位置,可以设置为 `center`、`left`、`right`、`top`、`bottom` 等值,例如: ```xml <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello world!" android:gravity="center" /> ``` 在上面的代码中,我们使用 `android:gravity="center"` 属性将文本内容设置在 `TextView` 的中心位置。你也可以组合使用多个值,例如 `android:gravity="center_vertical|right"`,来同时控制文本内容在水平和垂直方向上的位置。 `android:textAlignment` 属性用于控制文本内容沿着文本行的对齐方式,可以设置为 `center`、`textStart`、`textEnd`、`viewStart`、`viewEnd` 等值,例如: ```xml <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello world!" android:textAlignment="center" /> ``` 在上面的代码中,我们使用 `android:textAlignment="center"` 属性将文本内容设置在文本行的中心位置。需要注意的是,`android:textAlignment` 属性仅在 Android 4.2 及以上版本中可用。 需要注意的是,`android:gravity` 属性用于控制文本内容相对于 `TextView` 的位置,而 `android:textAlignment` 属性用于控制文本内容相对于文本行的位置。因此,如果你需要控制文本内容在 `TextView` 中的位置,可以使用 `android:gravity` 属性;如果你需要控制文本内容在文本行中的位置,可以使用 `android:textAlignment` 属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值