社区
Android
帖子详情
onMeasure,onLayout,onDraw未执行?Veiw获取宽高为0?
genius_lm
2017-02-16 09:54:02
我创建了一个继承ViewGroup的类,然后在Activity中创建并加载到了布局,并且运行也显示出了控件,但我在ViewGroup的子类中的onMeasure,onLayout,onDraw都没有执行是怎么回事?里面的输出语句都没有打印出来..
而且在Activity中的onClick中调用子类的getWidth()和getHeight()获取到的值都是0,网上没有查到类似的情况啊?
...全文
315
4
打赏
收藏
onMeasure,onLayout,onDraw未执行?Veiw获取宽高为0?
我创建了一个继承ViewGroup的类,然后在Activity中创建并加载到了布局,并且运行也显示出了控件,但我在ViewGroup的子类中的onMeasure,onLayout,onDraw都没有执行是怎么回事?里面的输出语句都没有打印出来.. 而且在Activity中的onClick中调用子类的getWidth()和getHeight()获取到的值都是0,网上没有查到类似的情况啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
怀君
2017-02-17
打赏
举报
回复
你还是再把自定义控件的用法深刻理解一遍
genius_lm
2017-02-16
打赏
举报
回复
public xxxViewCtrl(Context context) { this(context, null); } public xxxViewCtrl(Context context, AttributeSet attrs) { super(context, attrs); ofdViewer = new xxxViewer(context, attrs); ofdViewer.init(context, null, null); } 就是简单的两个构造,直接在Activity中new出来则不回调,但可以能显示出界面.在布局中添加可以回调,但我用布局添加却不显示子类的界面.
怀君
2017-02-16
打赏
举报
回复
请贴代码。你应该是构造函数里面方法没写对
自定义开关View绘制流程
测量 摆放 绘制 *
measure
->
layout
-> draw * | | | * on
Measure
-> on
Layout
->
onDraw
重写这些方法, 实现自定义控件 * * onResume()之后
执行
* * View * on
Measure
() (在这个方法里指定自己的宽高) ->
onDraw
() (绘制自己的内容) * * ViewGroup * on
Measure
() (指定自己的宽高, 所有子View的宽高)-> on
Layout
() (摆放所有子View) ->
onDraw
() (绘制内容)
自定义view之on
Measure
,on
Layout
,
onDraw
Android中自定义View时经常会需要重写View的on
Measure
(),on
Layout
()和
onDraw
()方法,下面分别介绍下这三个方法。 顺序on
Measure
()→on
Layout
()→
onDraw
() 一、on
Measure
()方法 on
Measure
(int width
Measure
Spec,int height
Measure
Spec) 1、调用时间:当
Android 自定义View之on
Measure
、on
Layout
、
onDraw
android自定义View,相信大家都会了。因此我也不打算在这一篇文章中去展示如何自定义View。我想分享一下自定义View中on
Measure
、on
Layout
、
onDraw
这几个方法中,我认为有趣的地方,尤其是on
Measure
方法对视图的测量。 on
Measure
:测量视图大小 首先,这个方法是用于测量我们的View的大小的。要用好这个方法,关键在于理解on
Measure
(int width
Measure
Spec, int height
Measure
Spec)这个两个参数的含义和用法。 其实,我相信
Android on
Measure
,on
Layout
,
onDraw
的理解
我们在自定义控件时,有时都需要重写,这三个函数,那这三个函数到底的作用是什么呢?测量——on
Measure
():决定View的大小 布局——on
Layout
():决定View在ViewGroup中的位置 绘制——
onDraw
():如何绘制这个View。View视图可以是单一的一个如TextView,也可以是一个视图组(ViewGroup)如Linear
Layout
。 如图:对于多View的视图
Android自定义View——on
Measure
,on
Layout
,
onDraw
的作用
View的绘制流程 一个View从创建到最终绘制出来,有三个方法是不得不提到的,那就是on
Measure
测量,on
Layout
定位,
onDraw
绘制 on
Measure
对于一个View绘制前,首先需要测量出来这个View的宽高,而这步工作就是由on
Measure
完成的了。 //view测量宽高的方法 protected void on
Measure
(int width
Measure
S...
Android
80,351
社区成员
91,288
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章