日常工作中,我们有时候需要知道一个 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 可以非常轻松的得到一行可以显示的最大字符数

更多相关文章

  1. Android中 startService()和bindService()的区别
  2. Contentprovider的基本用法
  3. Android回顾/Intent的使用
  4. AndroidStudio 打开工程进入下载gradle界面卡死的解决方法
  5. Android中Listview的平滑滚动(smoothScrollToPositionFromTop方
  6. android Fragments详解七:fragement示例
  7. 2020-08-31 2020常用面试题
  8. Android(安卓)高清加载长图或大图方案
  9. Android(安卓)Studio自带的底部导航栏 实现从其他Activity跳转到

随机推荐

  1. 学习ANDROID GOOGLE地图5部曲
  2. 查看android 签名文件的有效期限
  3. 【源码】实现Android闹钟功能使用HTML+JS
  4. Android开发学习 之 五、基本界面控件
  5. 记Android(安卓)Studio自定义属性访问不
  6. 一些非常实用的 Android(安卓)开发资源
  7. Android实现微信和QQ“在其他应用打开”
  8. 【源代码】基于Android和蓝牙的单片机温
  9. Android学习笔记2:Hello World程序解析
  10. Android(安卓)studio 3.0安装配置方法图