TextView未绘制情况下获取其宽高

简介: /** * 注:StaticLayout是android中处理文字换行的一个类,TextView源码中也是通过这个类实现换行的,使用这个类可以 * 在不进行TextView绘制的前提下得到TextView的宽高,这里我们只需要获取到高度即可,这个高度当然也可以通过post * 在run中获取,但是这样做会有一个问题,界面是先绘制显示然后再计算高度根据我们的逻辑来收缩TextView的高度,在列表中 * 会出现闪烁的问题。

    /**
     * 注:StaticLayout是android中处理文字换行的一个类,TextView源码中也是通过这个类实现换行的,使用这个类可以
     * 在不进行TextView绘制的前提下得到TextView的宽高,这里我们只需要获取到高度即可,这个高度当然也可以通过post
     * 在run中获取,但是这样做会有一个问题,界面是先绘制显示然后再计算高度根据我们的逻辑来收缩TextView的高度,在列表中
     * 会出现闪烁的问题。使用这个类一定要注意构造方法中参数的传递,保证参数和布局中textView设置的一致,否则会有误差
     * 这个问题和获取三行高度的要求是一样的
     *
     * @param textView
     * @param content
     * @param width
     * @return
     */
    public static int getTotalLineHeight(TextView textView, String content, int width) {
        if (TextUtils.isEmpty(content)) return 0;

        TextPaint textPaint = textView.getPaint();
        /**
         * width:表示textView的宽度,和布局保持一致,达到这个宽度,StaticLayout会对文字进行换行处理
         * 1 :是行高
         * UIUtil.dip2Px(CONTENT_LINE_SPACING)  :是行间距
         */
        StaticLayout staticLayout = new StaticLayout(content, textPaint, width, Layout.Alignment.ALIGN_NORMAL,
                1, UIUtil.dip2Px(CONTENT_LINE_SPACING), true);
        return staticLayout.getHeight();
    }
相关文章
|
XML Android开发 数据格式
简单使用BottomSheetBehavior实现底部弹窗
这次带来的是BottomSheetBehavior的简单使用,BottomSheetBehavior是Android Support Library23.2中引入的,它可以轻松实现底部动作条功能。
5126 0
|
Android开发
Android 如何实现带滚动条的TextView,在更新文字时自动滚动到最后一行
1、主布局代码:       2、主要代码 :   package com.android09; import android.
2728 0
|
6月前
|
人工智能 前端开发 JavaScript
用 通义灵码打造创意 Loading 动画生成器:只需三个词,就能玩出花来!
本文介绍了如何利用“通义灵码”打造一个创意 Loading 动画生成器。作者通过输入“科技感、电波、液体”三个关键词,借助 AI 工具自动生成酷炫的 CSS 动画效果,无需手动编写复杂代码。整个过程高效便捷,只需描述风格关键词,即可生成多种加载动画,并可封装为组件直接使用,极大地提升了开发效率与创意表达。
|
7月前
|
存储 监控 网络协议
HarmonyOS NEXT实战:网络状态监控
本教程介绍如何在HarmonyOS Next中使用@ohos.net.connection模块实现网络状态监控,并通过AppStorage进行状态管理,适用于教育场景下的网络检测功能开发。
294 2
|
KVM 虚拟化
kvm虚拟机磁盘管理
文章详细介绍了KVM虚拟机磁盘管理,包括磁盘格式概述、创建虚拟机时如何指定磁盘格式、以及磁盘工具的常用命令,旨在帮助用户更好地理解和操作KVM虚拟机的磁盘管理。
486 1
kvm虚拟机磁盘管理
|
算法 安全 前端开发
Java Queue接口及其常用实现类分析
Java Queue接口及其常用实现类分析
581 2
|
存储 安全 Java
Android 面试题及答案整理,最新面试题
Android 面试题及答案整理,最新面试题
594 2
|
安全 机器人 Shell
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
305 0