关于自定义View初始化时不执行onDraw方法的笔记

原创 2015年07月07日 14:34:09

如果自定义View,而不是自定义容器时,请检查自定义View的宽高是否出现0的情况。

如果自定义容器,请移步ViewGroup为什么不会调用onDraw


当我直接继承View实现自定义View时,遇到一个问题,莫名其妙的初始化后竟然不执行onDraw方法,我天,执行完onMeasure,在ondraw里打印log竟然不执行,我当时猜想,是不是我的控件宽高出现了0的情况,然后在自定义View打印了一下宽高,均不为0(原因确实是宽高为0了)。

然后百度“自定义view不执行onDraw方法”,找到的大多数都是描述“自定义viewgroup时不执行onDraw方法”--》例如这篇博文写的就很好“ViewGroup为什么不会调用onDraw”。

无奈翻墙谷歌,最后在这儿找到了启发:



我在使用控件的时候setLayoutParams的时候,传入了0值。


相关文章推荐

一个关于View/ViewGroup onMeasure() onLayout()被调用了但是onDraw()没有被调用的问题分析

好,问题的背景大家应该很熟悉,Android 的ViewGroup中可以通过addview()的方式加入View或者viewGroup,然后通常一个view要正常显示在屏幕上它的onMeasure()...

自定义View onDraw方法不被执行

一.引言: 想必大家以前也遇到過這個問題:出於項目的需要,我們有時需要 新建一個直接或者間接繼承View的類,以便複寫View提供的onDraw()方法,但有時我們反而得不到我們想要的結果,今天就說...

处理onDraw()方法不被执行的解决方法:

处理onDraw()方法不被执行的解决方法: setWillNotDraw(false); 官方文档的解释: If this view doesn't do any drawing on it...

ViewGroup为什么不会调用onDraw

正常情况下,我们重写LinearLayout的onDraw方法,它是不会被调用的,这篇文章就来分析一下原因和解决方法。 一,现象     android:id="@+id/ll_abso...

关于onDraw()方法不被执行的解决方法(setWillNotDraw)

一.引言:想必大家以前也遇到过这个问题:出于项目的需要,我们有时需要新建一个直接或者间接继承View的类,以便复写View提供的onDraw()方法,但有时我们反而得不到我们想要的结果,今天就说一下o...

为什么自定义ViewGroup ondraw方法不会被调用

viewgroup的绘制严格来说是在dispatchDraw中完成,作为一个容器,绘制自己的孩子该通过dispatchDraw(canvas)实现。但是你非要在ondraw中也不会出错。 但自定...

android 自定义view 不执行 ondraw的解决办法

public class BackgroundLayout extends LinearLayout { public BackgroundLayout(Contex...

关于onDraw()方法不被执行的解决方法(setWillNotDraw)

一.引言: 想必大家以前也遇到过这个问题:出于项目的需要,我们有时需要新建一个直接或者间接继承View的类,以便复写View提供的onDraw()方法,但有时我们反而得不到我们想要的结果,今天就说一...
  • look85
  • look85
  • 2012年12月27日 11:29
  • 18544

自定义view ondraw不执行的问题

onDraw函数不是在 invalidate 或者 posinvalidate调用后一定会执行!系统感觉你太快了Ondraw会调用偶尔几次,不会每次都调用ondraw! 后来,在处理任务里强...
  • mfc2003
  • mfc2003
  • 2015年01月23日 17:26
  • 1162

Android View onDraw 不执行

在ViewGroup中ondraw总是不执行,或者说不被调用.原因:if a ViewGroup background is null ,the funtion "ondraw" will not b...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于自定义View初始化时不执行onDraw方法的笔记
举报原因:
原因补充:

(最多只允许输入30个字)