首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin如何获取wrap_content TextView的宽度

Kotlin中获取wrap_content TextView的宽度可以通过以下步骤实现:

  1. 首先,获取到对应的TextView实例,可以通过findViewById方法或者使用ViewBinding来获取。
  2. 使用ViewTreeObserver来监听TextView的布局变化。
  3. 在布局变化的回调方法中,可以获取到TextView的宽度。

下面是一个示例代码:

代码语言:txt
复制
val textView = findViewById<TextView>(R.id.textView)

textView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
    override fun onGlobalLayout() {
        // 获取TextView的宽度
        val width = textView.width

        // 在这里可以对获取到的宽度进行处理
        // ...

        // 移除监听器,避免重复调用
        textView.viewTreeObserver.removeOnGlobalLayoutListener(this)
    }
})

在上述代码中,我们首先通过findViewById方法获取到了TextView的实例。然后,使用viewTreeObserver来添加一个全局布局监听器,该监听器会在布局发生变化时被调用。在监听器的回调方法中,我们可以通过textView.width来获取到TextView的宽度。在获取到宽度后,可以对其进行进一步的处理。最后,记得在回调方法中移除监听器,以避免重复调用。

这是一个简单的示例,你可以根据实际需求进行相应的处理和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kotlin 第一弹:自定义 ViewGroup 实现流式标签控件

,由于每个子 View 宽度不一样,所以会造成每一行需要宽度也不一样。...在上面的线框图中,TagView 有 3 行,而行所需要宽度也是不一样,这就造成了一个问题,对于 TagView 整体而言,在 layout_width 取值为 wrap_content 时候,究竟哪一些行宽度作为...答案是明显,肯定是宽度值最大那一数值。 而 layout_height 为 wrap_content 而言,TagView 高度值自然是每一行高度值之和,这里为了美观而言。...,其实这一步是有意为之,我特地为了测试在 kotlin获取自定义属性弄了这么一处。...可以发现其实没有多大影响,TagView 还是按照正确方式显示。我猜应该是获取子元素时候,属性为 gone 子元素不能获取。 那好,系统自动帮我们处理了这种情况。

1.3K20

js网页如何获取手机屏幕宽度

document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWidth (包括边线宽...) 网页可见区域高:document.body.offsetHeight (包括边线宽) 网页正文全文宽:document.body.scrollWidth 网页正文全文高:document.body.scrollHeight...网页被卷去高:document.body.scrollTop 网页被卷去左:document.body.scrollLeft 网页正文部分上:window.screenTop 网页正文部分左...:window.screenLeft 屏幕分辨率高:window.screen.height 屏幕分辨率宽:window.screen.width 屏幕可用工作区高度:window.screen.availHeight...屏幕可用工作区宽度:window.screen.availWidth 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112719.html原文链接:https:

10.8K30

浅谈 Android maxEms 属性

Tips2: 在使用 android:maxEms="6" 属性时, TextView 宽度需为 wrap_content 方式。...纯数字 测试发现: 无论是文字还是字母或是数字,设置完 maxEms 之后,文字所占宽度是一致,随着 maxEms 递增,文字宽度也是相同幅度递增; 不管是文字还是字母或数字,都不是单纯按照字符个数来展示...字体不同于英语,它是这个字体中最宽字母宽度,这个宽度是不同像素大小,然后是英语字体中 M 宽度大小,但是它仍然是 1EM。...主要代码: // xml 中 TextView <TextView android:layout_width="wrap_content" android:layout_height="...:text="@string/test_str1" /> // Kotlin 获取文字宽度 fun getTextViewWidth(tv: TextView): String { val spec

2K51

自定义 View 实战 01 - TextView

前言 本来主要介绍了系统textview如何显示,字体大小、文字颜色如何设置、文字位置该如何计算 步骤 1、继承 View 重写构造方法 class CustomTextView @JvmOverloads...,defStyle:Int=0) :View(context,attr,defStyle) 这里使用Kotlin,所以构造函数看起来要简洁很多 2、初始化对象及自定义参数获取 var...length, rect) //实际宽度 = 文字宽度 + view 左右 padding widthSize = rect.width() + paddingLeft...自定义TextView 好了,到这里就结束了,简单几步就可以实现文字展示了,自定义 View 基本步骤就如上面介绍那样。...这里总结一下: 重新构造函数(初始化会需要) 对象初始化及自定义属性获取 重写 onMeasure() 方法(只有重新了该方法,绘制内容才能正确显示) 重写 onDraw() 方法(在这里绘制我们需要内容

46730

如何在onCreate中获取View高度和宽度

如何在onCreate中获取View高度和宽度 在开发过程中经常需要获取到View宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成,一个measure过程,一个layout过程。...而这一切是发生在onCreate方法之后。所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确。...那应该怎么onCreate中获取View宽高呢?...开发者可以通过View.post()方法来获取到View宽高,该方法传递一个Runnable参数,然后将其添加到消息队列中,最后在UI线程中执行。

5.3K20

Kotlin学习日志(一)TextView、Button、Toast使用

在Android Studio 中使用Kotlin编写TextView、Button、Toast 介绍的话我就不说了,可以看我第一篇关于Kotlin文章,讲了为什么要用Kotlin原因,进入正题,...我们现在已经重新创建了一个Kotlin项目,我在activity_main.xml文件中放了一个id为tv_helloTextView和一个id为btn_testButton, 然后在MainActivity.kt....* 这句话意思是引进Kotlin控件变量自动映射功能,接下来只要是这个activity_main.xml文件中控件,我们就都不需要在调用findViewById方法来获取对象了。...相信很容易看明白吧,布局文件中TextViewtext属性是“Hello World!”,我们通过代码改成“你好 Kotlin”,按钮点击之后我们改变这个按钮文本值为“您点了一下!”...;toast("小提示:您点了一下") } 该说都说完了,我再介绍一个库:Anko库 简介:Anko是使用Kotlin语言编写一个Android增强库,它用于简化Android开发时Kotlin

1.3K20

Kotlin学习日志(二)数据类型

1.2变量转换 Kotlin中进行数据转换和Java中不同,就不一一对比了,直接说Kotlin如何进行数据类型转换,Kotlin中都是使用类型转换函数来进行数据类型转换,让我们来认识一下,如下表 Kotlin...,接下来就是操作这个数组了, 2.1数组元素操作 对于数组操作,常见处理包括获取数组长度、获取指定位置数组元素,这些操作在Kotlin与Java中是有区别的,如下: (1)获取数组长度,Java...使用**.length**,Kotlin使用**.size**(PS:前面有一个点) (2)获取指定位置数组元素,Java通过方括号加下标来获取,比如“ string_array[2]”(PS:获取该数组第三个元素...,下标是从0开始),Kotlin也能通过方括号加下标来获取指定元素,不过Kotlin还有get和set两个方法,通过get方法获取元素值,通过set方法修改元素值,我们演示一下,代码如下: 布局文件...iterator 获取该容器迭代器。 count 获取该容器包含元素个数,也可通过size来获取

3.3K20

ConstraintLayout使用场景必知必会

N等分布局 常见N等分布局,例如三等分布局,通常都需要进行动态计算,根据屏幕宽度,减去间距后得到每部分宽度,再动态设置给每个元素,而通过ConstraintLayout,则可以直接实现这样效果。...超长限制强制约束 考虑下面这个场景,最下面的TextView最大不会超过第一个TextView宽度。 ? image-20201231143217743 <?...Email和Password两个TextView宽度可能因为文字不一样而不同,需要他们整体取最大宽度后,与右边元素进行对齐,如下所示。 ?...image-20201231151918340 当然,不设置这个属性,将TextView宽度设置为wrap_content,也是可以实现这个效果,这就需要使用到前面讲constrainedWidth...向大家推荐下我网站 https://xuyisheng.top/ 点击原文一键直达 专注 Android-Kotlin-Flutter 欢迎大家访问

1.2K20

Kotlin干掉了findViewById,但用不好也会有性能问题

如果你对其原理有所了解,应该知道它其实是使用了「懒加载」,并不是每次调用 View ID,Kotlin 都帮我们去自动 findViewById(),而是用时获取,取到后就缓存下来,方便下次再用。...Kotlin 干掉了 findViewById 2.1 如何使用? 想使用这个特性,还需要一些简单配置,不过在 Android Studio 中,我们支持 Kotlin 时候就已经自动配置完成。...<TextView android:id="@+id/tvName" android:layout_width="wrap_content" android:layout_height...() 会返回 null,导致获取控件失败。...既然知道了问题所在,那么如何避免就显而易见了。 三. 小结时刻 在本文中,我们聊到了 Kotlin 中一个非常好特性,直接通过 View ID 访问布局内 View 对象。

2.7K10

【Jetpack】DataBinding 架构组件 ② ( 字符串拼接函数 | 绑定点击事件函数 | DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 )

Java 类 2、DataBinding 布局中使用 import 标签导入 Kotlin 类 四、完整代码示例 1、数据类 2、导入 Java 类 3、导入 Kotlin 类 4、DataBinding..., 最终处理方式是 将 int 类型变量 student.age 通过 String.valueOf 函数转为 字符串 类型 , 设置到 TextView 组件中 ; <TextView...静态方法 , 设置最终显示hi文本 ; <TextView android:id="@+id/textView2" android:layout_width...类 首先 , 定义一个 Kotlin 类 , 在其中 companion object 伴生对象 定义 Java 静态方法 , 接收一个值 , 拼接字符串 ; 在 Kotlin 中定义 Java 静态方法...静态方法 , 设置最终显示hi文本 ; <TextView android:id="@+id/textView" android:layout_width

57550

android如何获取view在布局中高度与宽度详解

前言 可能很多情况下,我们都会有在activity中获取view 尺寸大小(宽度和高度)需求。面对这种情况,很多同学立马反应:这么简单问题,还用你说?你是不是傻。。...然后立马写下getWidth()、getHeight()等方法,洋洋得意就走了。然而事实就是这样吗?实践证明,我们这样是获取不到View宽度和高度大小。...view.getHeight(); // 获取高度 } 五、重写 View onLayout 方法 该方法会被多次调用,获取宽度和高度后需要考虑禁用掉代码。...,会被多次调用,因此需要在获取到视图宽度和高度后执行 remove 方法移除该监听事件。...首先第一个方法,以前用过,确实不准确,猜测是应该是因为参数没有用好,因为参数只使用UNSPECIFIED未指定测量方式,一般像Wrap_Content,才是该测量方式。

5.8K10

TextView前面(或后面)添加文本(或者图片)标签

前言 大家都知道,前几年在TextView文本前添加自定义标签文本或标签图片还是比较火,特别是一些电商项目。...如果使用TextView自带drawableLeft属性,虽然可以满足一些常规需求,但是可定制化太低,而且文本换行时图片和文本会分离,达不到想要效果。...如何使用 Step 1.先在 build.gradle(Project:XXX) repositories 添加: allprojects { repositories {...reference 图片标签 如果tvt_tag_text 、tvt_tag_image都设置的话,只有tvt_tag_image生效 tvt_tag_width dimension 标签自定义宽度...都设置的话,只有tagImage生效 tagImage Drawable 图片标签 如果tagText 、tagImage都设置的话,只有tagImage生效 tagWidth Int 标签自定义宽度

2.4K20
领券