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

onPreDrawListenter内部的getHeight返回0

onPreDrawListener是Android中的一个接口,用于监听视图树绘制的过程。当视图树将要绘制时,会调用onPreDraw方法,我们可以在该方法中进行一些操作。

在onPreDraw方法中,如果调用了视图的getHeight方法,并且返回值为0,可能有以下几种情况:

  1. 视图尚未完成测量和布局:在视图绘制的过程中,首先会进行测量和布局操作,然后才会进行绘制。如果在onPreDraw方法中调用getHeight方法,而此时视图尚未完成测量和布局,那么返回的高度值就是0。这通常发生在视图第一次绘制时或者在视图的尺寸发生变化时。
  2. 视图的高度确实为0:有些视图确实是没有高度的,比如一个空的LinearLayout或者一个没有内容的TextView。在这种情况下,调用getHeight方法返回0是正常的。

为了解决这个问题,可以采取以下几种方法:

  1. 使用ViewTreeObserver来监听视图的绘制完成事件,而不是在onPreDraw方法中获取高度。可以通过ViewTreeObserver的addOnGlobalLayoutListener方法来监听视图的布局完成事件,然后在回调方法中获取视图的高度。
  2. 在合适的时机获取视图的高度。可以在视图的生命周期方法中获取高度,比如在onResume方法中或者在视图的回调方法中。
  3. 确保视图已经完成测量和布局。可以通过调用视图的measure和layout方法来确保视图已经完成测量和布局,然后再获取高度。

总结:onPreDrawListener内部的getHeight返回0可能是因为视图尚未完成测量和布局,或者视图的高度确实为0。为了解决这个问题,可以使用ViewTreeObserver来监听视图的绘制完成事件,或者在合适的时机获取视图的高度,确保视图已经完成测量和布局。

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

相关·内容

java内部作用(一)----解决函数参数返回问题

我们知道一个函数只有一个返回值,如果当返回很多数据时候,这个返回值是需要处理,也就是返回类型(数组或者自定义类来解决) 当我们要处理做一个处理时候,需要返回两个以上参数时候...,就可以用内部类解决这个问题 而如果此时这个作为返回内部类不需要引用外围类对象的话,就可以加上STATIC  静态内部类  取消产生内部作用 因为内部类对象总有一个隐式引用,它指向了创建它外部对象...也就是有这样一个特性: 静态内部对象除了没有对生成它外围类对象引用特权外,与其他所有内部类完全一样 接下来我们看看java技术核心提供代码: 内部类: package org.innerclass.operate...main(String[] args) { // TODO Auto-generated method stub double[] d = new double[20]; for(int i =0;...,因为外部类对象是在静态方法中构造这个内部对象

1.5K20
  • ScalaPB(0): 找寻合适内部系统微服务集成工具

    虽然Cassandra和MongoDB是分布式,但也只限在它们已部署不同节点上自由交流。现在看来,不同数据微服务之间交互还是需要通过serialization来实现。...一直在考虑,如果SDP数据平台微服务之间是通过akka-http进行数据交换形式实现集成的话,这个集成体系内部交互效率会非常低,这是因为1、json是一种字符型数据,占据空间较大,传输效率自然低。...google gRPC是一种全新RPC框架,在开源前一直是google内部使用集成工具。gRPC支持通过http/2实现protobuf格式数据交换。...这是在系统集成编程方面相对aka-http占优一个亮点。protobuf格式数据可以很方便转换成 json格式数据,支持对外部系统开放协议数据交换。...更重要是:用protobuf和gRPC进行client/server交互不涉及任何http对象包括httprequest,httpresponse,很容易上手使用,而且又有在google等大公司内部成功使用经验

    65020

    如何在 Go 中优雅处理和返回错误(1)——函数内部错误处理

    这也是一个语言级问题 服务/系统错误信息返回: 微服务/系统在处理失败时,如何返回一个友好错误信息,依然是需要让调用方优雅地理解和处理。...首先本文就是第一篇:函数内部错误处理 ---- 高级语言错误处理机制   一个面向过程函数,在不同处理过程中需要 handle 不同错误信息;一个面向对象函数,针对一个操作所返回不同类型错误...在许多高级语言中都提供了 try ... catch 语法,函数内部可以通过这种方案,实现一个统一错误处理逻辑。...这里也催生出了集中解决方案 defer 函数   笔者采用方法,是将需要返回 err 变量在函数内部全局化,然后结合 defer 统一处理: func SomeProcess() (err error...原文标题:《如何在 Go 中优雅处理和返回错误(1)——函数内部错误处理》 发布日期:2021-09-18 原文链接:https://cloud.tencent.com/developer/article

    9K151

    详解javascript中即时函数,内部函数,能重写自身函数即时函数内部函数返回函数函数能重写自己函数小结

    在上篇谈到匿名函数和回调函数基础上,我们接着介绍javascript中即时函数,内部函数,返回函数函数,能重写自身函数等几种常见函数类型及使用方法。...所以,我们自然就可以在一个函数内部定义另外一个函数,这样函数就叫做内部函数。...我们知道内部函数只能在定义它函数内部调用它,不能再外部调用它。所以有时候也叫它私有函数。 使用私有函数有什么好处呢?...返回函数函数 正如之前所提到那样,函数始终有一个返回值,即便不是显示返回值么,它也会隐式返回一个undefined,所以既然函数能返回一个唯一值,那么自然函数也能够返回一个函数。...能重写自己函数 我们可以在一个函数内部重定义该函数。

    1.5K10

    CoCreateInstance调用返回代码0x80040154一种解决方法

    同时还要在图片和视频文件顶部加上LOGO。像如下这样: ?      ...在另外一台Win7机器上测试时,缩略图中并没有出现想象中LOGO。一看日志文件,发现一直在报:CoCreateInstance()调用返回0x80040154。...那么CoCreateInstance()为啥会返回0x80040154呢?这个代码又意味着什么嗯?从网上搜索结果来看,0x80040154是表示"Class Not Registered"。...这个怀疑显然是不成立,从MSDN上来看从XP SP2就开始支持了啊: ?       那么难道是参数给不对?...而这个GUID在Windows7上是不存在(搜索注册表即可看到结果): ? ?       自然CoCreateInstance()调用就会返回0x80040154了。

    2.4K100

    storageemulated0路径下File.listFiles返回值为null

    回值为null 前言 为了获取Android手机中某个文件夹下所有文件夹或文件,我们利用File类listFiles方法,但是,有些文件路径下明明有子文件,可是该方法总是返回null值。...比如Android虚拟机中storage/emulated/0路径下明明有子文件,但是,listFiles却返回null。...getAbsolutePath(); File DirOrFile=new File(path ); File[] files = DirOrFile.listFiles(); 二、但是,以上代码会返回...null值,此时,打开Android studiobuild.gradle(Module.app)文件,将其中targetSdkVersion修改为22(小于23即可),不必管它是否报错,直接点击提示...【Sync Now】 三、完成之后,再将targetSdkVersion修改回您原先版本号即可解决问题(我也不知道发生了什么神奇事情,但是,这样就是解决了)

    1.4K20

    Java基础02 方法与数据成员

    这个方法有一个int类型返回值。Java中使用return来返回值。 注意this,它用来指代对象自身。当我们创建一个aPerson实例时,this就代表了aPerson这个对象。...aPerson高度增加了10。 调用同一对象其他方法 在方法内部,可以调用同一对象其他方法。在调用时候,使用this.method()形式。我们还记得,this指代是该对象。...比如上面的getHeight()例子中,尽管我们从来没有提供height值,但Java为我们挑选了一个默认初始值0。...基本类型数据成员默认初始值: 数值型: 0 布尔值: false 其他类型: null 我们可以在声明数据成员同时,提供数据成员初始值。...} 这里,数据成员height初始值为175,而不是默认0了。

    70490

    Java基础02 方法与数据成员

    这个方法有一个int类型返回值。Java中使用return来返回值。 注意this,它用来指代对象自身。当我们创建一个aPerson实例时,this就代表了aPerson这个对象。...aPerson高度增加了10。 调用同一对象其他方法 ---- 在方法内部,可以调用同一对象其他方法。在调用时候,使用this.method()形式。我们还记得,this指代是该对象。...比如上面的getHeight()例子中,尽管我们从来没有提供height值,但Java为我们挑选了一个默认初始值0。...基本类型数据成员默认初始值: 数值型: 0 布尔值: false 其他类型: null 我们可以在声明数据成员同时,提供数据成员初始值。...} 这里,数据成员height初始值为175,而不是默认0了。

    35320

    软件内部定时炸弹:0-Day Log4Shell只是冰山一角

    在我写这篇文章时候Log4Shell已经发生了。所以这成为我将要分享最好例子–为什么现在网络威胁更具威胁性。...我需要告诉你是,网络安全威胁性质不同于我们过去所面临挑战–从技术复杂性到日益增长相互依赖。因此,攻击者抓住机会速度比我们缓解要快得多。但首先让我们谈谈什么是Log4Shell。...Log4j 0-day 漏洞(又称"Log4Shell")(CVE-2021–44228 & CVE-2021–45046) 世界各地公司都在努力降低多年来发现最重要开源软件安全漏洞造成损害。...最后的话–软件内部定时炸弹 无论是Log4j还是Realtek漏洞–都是冰山一角。...在蠕虫和病毒准备削弱网络重要部分早期,我们作为一个行业没有做任何事情:我们没有实施更好技术,减少我们攻击面,或解决代码库中内存损坏问题。

    24040

    圣诞节会呼吸玫瑰爱心代码 一起浪漫吧

    心跳+呼吸灯效果,含义:你心围她而动深刻含义! 内部心不停转动效果,含义:你心围她而动深刻含义!...(10,getHeight()*3/5,5,getHeight()*2/5); generalPath.quadTo(0,getHeight()*2/10,getWidth()*1/4,getHeight...PS:这个地方又是9,看得出勇哥用心设计了吧~ 动画演示一番,希望得点赞: 9个心,蕴含长长久久 参考实现代码: for (int i = 0; i < 9;...center, 0.5f * getWidth()*per, dist, colors); g2d.setPaint(p); g2d.fill(generalPath); } 呼吸效果&内部心旋转思路及实现...内部心旋转思路: 定义theta变量,表示内部心旋转角度 通过线程每100ms修改一下角度值,步长为2度 double theta = 0;// 选择角度 float per

    53920
    领券