Android中获取TextView一行最多能显示几个字

日常工作中,我们有时候需要知道一个 TextView 一行最多显示几个字符,这里提供两个方法(这两个方法都需要知道 TextView 的宽度)

方法一:

   /**
     * 获取textview一行最大能显示几个字(需要在TextView测量完成之后)
     *
     * @param text     文本内容
     * @param paint     textview.getPaint()
     * @param maxWidth  textview.getWidth()/或者是指定的数值,如200dp
     * @return
     */
    private int getLineMaxNumber(String text, TextPaint paint, float maxWidth) {
        if (null == text || "".equals(text)) {
            return 0;
        }
        //得到文本内容总体长度
        float textWidth = paint.measureText(text);
        // textWidth
        float width = textWidth / text.length();
        return maxWidth / width;
    }

上面这个方法不太精确,不过比较适合在 RecyclerView 或 ListView 里面使用,避免生成太多对象

(该方法抄自 一叶飘舟的blog 的修改)

方法二:

/**
     * 获取textview一行最大能显示几个字(需要在TextView测量完成之后)
     *
     * @param text     文本内容
     * @param paint    textview.getPaint()
     * @param maxWidth textview.getMaxWidth()/或者是指定的数值,如200dp
     */
    private int getLineMaxNumber(String text, TextPaint paint, int maxWidth) {
        if (null == text || "".equals(text)) {
            return 0;
        }
        StaticLayout staticLayout = new StaticLayout(text, paint, maxWidth, Layout.Alignment.ALIGN_NORMAL
                , 1.0f, 0, false);
        //获取第一行最后显示的字符下标
        return staticLayout.getLineEnd(0);
    }

利用 StaticLayout 可以非常轻松的得到一行可以显示的最大字符数

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值