获取textview行数

获取textview行数如果我们想获取TextView内容的行数,TextView没有提供现成的api供我们使用,需要我们自己获取。这里提供一个间接的方法,通过StaticLayout来间接获取行数。下面是代码:publicstaticintgetTextViewLines(TextViewtextView,inttextViewWidth){intwidth=textViewWidt…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

如果我们想获取TextView内容的行数,TextView没有提供现成的api供我们使用,需要我们自己获取。

这里提供一个间接的方法,通过StaticLayout来间接获取行数。

下面是代码:

public static int getTextViewLines(TextView textView, int textViewWidth) {
    int width = textViewWidth - textView.getCompoundPaddingLeft() - textView.getCompoundPaddingRight();
    StaticLayout staticLayout;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        staticLayout = getStaticLayout23(textView, width);
    } else {
        staticLayout = getStaticLayout(textView, width);
    }
    int lines = staticLayout.getLineCount();
    int maxLines = textView.getMaxLines();
    if (maxLines > lines) {
        return lines;
    }
    return maxLines;
}

/**
 * sdk>=23
 */
@RequiresApi(api = Build.VERSION_CODES.M)
private static StaticLayout getStaticLayout23(TextView textView, int width) {
    StaticLayout.Builder builder = StaticLayout.Builder.obtain(textView.getText(),
            0, textView.getText().length(), textView.getPaint(), width)
            .setAlignment(Layout.Alignment.ALIGN_NORMAL)
            .setTextDirection(TextDirectionHeuristics.FIRSTSTRONG_LTR)
            .setLineSpacing(textView.getLineSpacingExtra(), textView.getLineSpacingMultiplier())
            .setIncludePad(textView.getIncludeFontPadding())
            .setBreakStrategy(textView.getBreakStrategy())
            .setHyphenationFrequency(textView.getHyphenationFrequency())
            .setMaxLines(textView.getMaxLines() == -1 ? Integer.MAX_VALUE : textView.getMaxLines());
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        builder.setJustificationMode(textView.getJustificationMode());
    }
    if (textView.getEllipsize() != null && textView.getKeyListener() == null) {
        builder.setEllipsize(textView.getEllipsize())
                .setEllipsizedWidth(width);
    }
    return builder.build();
}

/**
 * sdk<23
 */
private static StaticLayout getStaticLayout(TextView textView, int width) {
    return new StaticLayout(textView.getText(),
            0, textView.getText().length(),
            textView.getPaint(), width, Layout.Alignment.ALIGN_NORMAL,
            textView.getLineSpacingMultiplier(),
            textView.getLineSpacingExtra(), textView.getIncludeFontPadding(), textView.getEllipsize(),
            width);
}

Jetbrains全家桶1年46,售后保障稳定

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222960.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 金税盘、税控盘、税务UKey快速批量抄税清卡的一种方法分享

    金税盘、税控盘、税务UKey快速批量抄税清卡的一种方法分享本文介绍了金税盘,税控盘,税务UKey抄税和清卡的流程,及常见的一键批量抄税,一键批量清卡的技术手段。分享使用组件进行批量抄税和清卡的核心代码。组件接口同时支持发票开具,作废,红冲等功能。

    2022年6月5日
    108
  • Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略

    Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略目录dlib库的简介dlib库的安装dlib库的使用函数0、利用dlib.get_frontal_face_detector函数实现人脸检测可视化1、hog提取特征的函数2、CNN提取特征的函数dlib库的简介一个机器学习的开源库,包含了机器学习的很多算…

    2022年6月29日
    43
  • Nmap命令详解及常用命令总结[通俗易懂]

    Nmap命令详解及常用命令总结[通俗易懂]Nmap学习文章目录Nmap学习0Nmap介绍1Nmap命令详解1.1Nmap命令help详解(内附中文翻译)1.2Nmap命令思维导图2Nmap常见使用场景以及相关命令2.1Nmap常用扫描命令2.1.1扫描固定端口,以sqlServer为例2.1.2获取远程主机的系统类型及开放端口2.1.3列出开放了指定端口的主机列表2.1.4在网络寻找所有在线主机2.1.5…

    2022年5月28日
    114
  • Dubbo原理解析

    Dubbo原理解析Dubbo 原理解析系列文章 http blog csdn net quhongwei zhanqiu article details

    2025年8月30日
    1
  • html设置背景图片自适应

    html设置背景图片自适应在网上找了很久,终于在一个百度问答里找到正确答案,记录下来,方便以后使用。在<body>中设置:<bodybackground=”images\bg.jpg”style=”background-repeat:no-repeat;background-size:100%100%;background-attachment:fixed;”>第一行是图片…

    2022年4月27日
    79
  • powerDesigner生成HTML报表

    powerDesigner生成HTML报表报告-GenerateReport

    2022年9月16日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号