Android中获取TextView一行最多能显示几个字
16lz
2021-01-26
日常工作中,我们有时候需要知道一个 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
可以非常轻松的得到一行可以显示的最大字符数
更多相关文章
- Android中 startService()和bindService()的区别
- Contentprovider的基本用法
- Android回顾/Intent的使用
- AndroidStudio 打开工程进入下载gradle界面卡死的解决方法
- Android中Listview的平滑滚动(smoothScrollToPositionFromTop方
- android Fragments详解七:fragement示例
- 2020-08-31 2020常用面试题
- Android(安卓)高清加载长图或大图方案
- Android(安卓)Studio自带的底部导航栏 实现从其他Activity跳转到