jjzjj

onLayout

全部标签

android - onMeasure、onLayout、OnGlobalLayoutListener 的区别

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

android - 自定义布局上的 Onlayout 方法扩展 RelativeLayout

在扩展RelativeLayout的自定义布局中覆盖onLayout方法的正确方法是什么?我试图将所有View放在一个表格中。这个想法是用ImageViews填充一行直到它填满,然后在新行中继续。@OverrideprotectedvoidonLayout(booleanchanged,intl,intt,intr,intb){super.onLayout(changed,l,t,r,b);intidOfViewToTheLeft=1;RelativeLayout.LayoutParamsparams=newRelativeLayout.LayoutParams(getContext(

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

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

android - 测试自定义 View 的 onMeasure/onLayout/onDraw 方法的好方法是什么?

我刚刚编写了一个自定义View类,除其他外,它允许开发人员轻松设置边框(例如setBorderWidth、setBorderColor、setBorderWidthLeft等)。我通过覆盖onMeasure/onDraw来做到这一点,我想测试View是否正确绘制了这些边框。理想情况下,我想要比单元测试更高级别的东西:基本上我想强制执行如果我设置边框,它们会按预期绘制;如果我不设置它们,它们就不会被绘制;如果我更改它们,则会绘制新边框,而旧边框将不再可见。这让我知道我的观点在高层次上是有效的。我考虑过的事情:将View与Robolectric隔离,并使用模拟Canvas手动调用onDra

android - 在尺寸不变的 subview 中强制 onLayout

我有一个自定义ViewGroup,里面有一些View。为了响应事件,调用requestLayout并且在OnLayout中一些View将获取新的布局位置。其中一个保持其位置但需要在内部重新排列。但是这个View的onlayout方法不会被调用,因为它的布局位置没有改变。尝试在此View中调用requestLayout、forceLayout或invalidate不起作用。我发现的唯一肮脏的技巧是改变它的一些值位置来强制改变布局,但我认为应该有更好的方法。所以,现在我做了一些(可怕的)事情,比如:intpatch=0;@OverrideprotectedvoidonLayout(bool

java - addOnLayoutChangeListener 和 onLayout(changed) 的区别?

我有课publicclassFancyViewextendsViewimplementsView.OnTouchListener{我需要获取View的高度/宽度。(它可能会随着设备旋转而改变。当然,高度/宽度在初始化时是未知的。)你可以这样做......所以,实际上在FancyView类中只是覆盖onLayout(changed)@OverrideprotectedvoidonLayout(booleanchanged,intleft,inttop,intright,intbottom){super.onLayout(changed,left,top,right,bottom);int

android - 'LikeView' 没有原生类型 'RCTFBLikeView.onLayout' 的 propType 'boolean' 如果你没有改变这个

LikeView没有原生类型boolean的原生PropRCTFBLikeView.onLayout的propType如果您没有自己更改此属性,这通常意味着您的native代码和JavaScript代码版本不同步。更新两者应该会使这个错误消失。不确定为什么会出现此错误。我根本没有在android应用程序中使用LikeView。我试过运行npmstart--reset-cache。iOS版本的应用程序运行也没有问题。这只发生在android上。欢迎提出任何建议。谢谢! 最佳答案 我发现问题是(正如RN指出的那样)每个View使用的Pr

android - 查看可见性状态 GONE 占用屏幕空间

我遇到了一个问题,即可见性状态为GONE的View(不希望地)占用了屏幕空间。这个问题总是发生在API级别ShowaprogressbarwhenanActivityisloading)一点背景:我创建了一个扩展LinearLayout的自定义View,其中包含一个“标题”按钮和(用户定义;在某些情况下,它是一些TextView,在其他情况下它是TableLayouts)“内容”。此View的目的是在点击标题按钮时切换内容View(我不相信有一个内置的小部件可以做到这一点。我可能是错的)。在onLayout()中,我明确地将除标题之外的所有subview的可见性状态设置为GONE,这是

android - 为什么 onLayout 和 onSizeChanged 在方向改变时被调用两次?

我注意到在处理来自Activity的配置更改时,onLayout和onSizeChanged在方向更改后立即连续调用两次,从横向->纵向或从纵向->横向.此外,第一个onLayout/onSizeChanged包含旧尺寸(旋转之前),而第二个onLayout/onSizeChanged包含新(正确)尺寸。有谁知道为什么,和/或如何解决这个问题?似乎屏幕尺寸的变化可能在配置更改后的相当长一段时间内发生-即,当onConfigurationChanged被调用时,尺寸在配置更改后立即不正确?下面是代码的调试输出,显示了从纵向到横向旋转后的onLayout/onSizeChanged调用(请

android - 如何从 onLayout 重新加载界面?

我有这个GUI:线性布局-TableLayoutheading-ViewFlipperflipper-TableLayout1-TableLayout2-TableLayout3...(dynamiclyadded)我在vf.onLayout(..)中更改了t1的宽度,但我无法重绘它....请帮忙:/这是代码:@OverrideprotectedvoidonLayout(booleanchanged,intleft,inttop,intright,intbottom){super.onLayout(changed,left,top,right,bottom);Log.i(TAG,"fl
12