jjzjj

onMeasure

全部标签

android - onMeasure、onLayout、OnGlobalLayoutListener 的区别

我正在做一个非常简单的功能,比如在TextView的末尾添加省略号。我可以在onMeasure()、onLayout()和OnGlobalLayoutListener()调用中添加该功能。但我真的很想知道在这三种不同的方法中实现相同的功能有什么区别。选择这些不同的实现方式有什么偏好或利弊吗?谢谢 最佳答案 尝试关注this会有帮助Thelayoutprocessconsistsoftwopasses,measuringandlayouting.Abitsimplifiedwecansaythatthemeasurepasssetsh

android - onMeasure() 以 EXACTLY 和规范大小 0 调用

在调试覆盖onMeasure()方法的自定义View时,我看到有多个调用此方法。我只处理View的高度,而宽度规范始终保持不变。在某些时候,我接到一个电话,使用(高度)MeasureSpecgetMode()==EXACTLY和getSize()==0。这没有意义并且与Android文档相矛盾:MeasureSpecsareusedtopushrequirementsdownthetreefromparenttochild.AMeasureSpeccanbeinoneofthreemodes:UNSPECIFIED:Thisisusedbyaparenttodeterminethede

android - 在 ImageView 的 setImageBitmap 之后 onmeasure 方法上的时间太多

老读者了,第一次提问所以请轻声细语;)我有一个Android代码可以在ImageView上每秒显示大约10张图片。(在ImageView上调用setImageBitmap来设置新的位图)这会导致显示滞后,所以我正在尝试尽可能加快它的速度。我发现(使用traceview)该应用在方法上花费了大量时间:ViewRoot.performTraversalsView.measureFrameLayout.onmeasureViewGrou.measureChildWithMargins我怀疑ImageView正在测量,所以我创建了CustomImageView并覆盖了onMeasure只是为了

android - onmeasure 被调用,我不知道为什么 - android

我有一个Activity,其中有几个线性布局的View,一个是TextView,一个是我的游戏的主视图,这是我在代码中使用的自定义View。当我将以下代码添加到我的Activity中时:mTextView.setText("randomtext");onMeasure()在自定义View中被调用,即TextView上的setText似乎导致不同的View重新测量。因为我的onmeasure()代码以不受欢迎的方式重置了View,所以我想避免这种情况发生。在这种情况下,是什么导致了对onMeasure()的调用,我该如何停止它? 最佳答案

android - 在 onResume() 之前动态更改 DialogFragment Max_Height?

我有一个自定义的DialogFragment,我想根据其View的内容大小(换行内容)动态更改其max_height。我不希望max_height的更新导致UI跳转,所以我计划在View生命周期的早期进行:onMeasure().但是我怎样才能通知包含的dialog或dialogFragment?从Dialogfragment中我可以获得它的托管View,但我无法注册它的onMeasure()事件。从View上看,我可以在onMeasure()方法中编写代码,但我将如何获得对其包含的对话框的引用?我看到了这篇文章,但是在onResume()改变高度会导致一个slagishUI(看到UI

android - 为什么ViewRecycler会在onMeasure上爆炸

我让ViewRecycler在Fragment中使用CardView,它是ActionBarActivity上ViewPager的一部分。所有这些都来自支持库。当我尝试打开应用程序时,它崩溃并出现以下异常。是否有我遗漏的已知问题或解决方案?java.lang.NullPointerExceptionatandroid.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764)atandroid.view.View.measure(View.java:16736)atandroid.support.v4.view.Vi

android - SurfaceView onMeasure() 没有调用setMeasuredDimension() 设置测量维度

我有一个SurfaceView。我只是从其他线程手动绘制它。运行良好。但是平均运行10-20分钟后,我得到了这个异常:01-1408:51:25.0003740-3740/com.myPackageE/AndroidRuntime﹕FATALEXCEPTION:mainjava.lang.IllegalStateException:onMeasure()didnotsetthemeasureddimensionbycallingsetMeasuredDimension()atandroid.view.View.measure(View.java:15200)atandroid.widg

Android: 错误的 onMeasure - 多次调用

希望得到帮助。我的函数调用onMeasure的问题。在我的xml文件中(RelativeLayput)-3个元素:TextView、RelativeLayout并将它们包含在我的类中。现在是我的MainActivity类和我的创建类publicclassMainActivityextendsActivityimplementsOnTouchListener{finalStringLOG_TAG="myLogs";TextViewtv1;UiMyClassuimc;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super

android - 覆盖 RelativeLayout 的 onMeasure() 以限制其纵横比

我有一个扩展的RelativeLayout,当使用RelativeLayout.LayoutParams以编程方式定位和调整大小时,它需要将自身限制为给定的纵横比。通常,我希望它能将自身限制为1:1,这样如果RelativeLayout.LayoutParams包含200的width和height100,自定义RelativeLayout会将自身限制为100x100。我已经习惯于在普通自定义View中覆盖onMeasure()以实现类似的目标。例如,我已经创建了自己的SVG图像转换器,并且呈现SVG图像的自定义View有一个重写的onMeasure()确保对的调用setMeasured

android - 每次设置 ImageView 位图时避免 onMeasure 和 onLayout

这是我的设置。我有一个自定义ListView,带有一些花哨的header,它位于ViewPager中。我正在维护图像的内存缓存,这些图像已经下载并存储在本地,就像任何自尊的开发人员一样。我遇到的问题是,每次我在ListView的的ImageView上调用setImageBitmap(Bitmapbm)>getView()方法,使用缓存中的位图,它导致我的所有View都为onMeasure()。我查看了AndroidImageView源代码并发现了这个:publicvoidsetImageDrawable(Drawabledrawable){if(mDrawable!=drawable)