关于自定义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 onDraw方法不被执行

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

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

public class BackgroundLayout extends LinearLayout { public BackgroundLayout(Contex...
  • ID19870510
  • ID19870510
  • 2011年09月04日 03:21
  • 8216

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

处理onDraw()方法不被执行的解决方法: setWillNotDraw(false); 官方文档的解释: If this view doesn't do any drawing on it...
  • u012573920
  • u012573920
  • 2015年01月13日 10:31
  • 1088

ViewGroup为什么不会调用onDraw

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

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

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

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

viewgroup的绘制严格来说是在dispatchDraw中完成,作为一个容器,绘制自己的孩子该通过dispatchDraw(canvas)实现。但是你非要在ondraw中也不会出错。 但自定...
  • hb8676086
  • hb8676086
  • 2016年07月28日 23:05
  • 1196

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

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

自定义view的时候,执行了invalidate()方法后 onDraw()不被调用的解决方法

如果在调用invalide方法没有刷新view的时候,可以采用刷新父布局的方式:((View)view.getParnet()).invalidate(); 或者用另外一个方法: view.inval...
  • ddddwwww2
  • ddddwwww2
  • 2016年11月04日 09:41
  • 2733

Android View onDraw 不执行

在ViewGroup中ondraw总是不执行,或者说不被调用.原因:if a ViewGroup background is null ,the funtion "ondraw" will not b...
  • walid1992
  • walid1992
  • 2016年03月23日 11:32
  • 1020

android 自定义控件onDraw方法未被调用

今天先只在这记录一下 onDraw方法未被调用的解决办法,和大概原因,回头再仔细研究原因:我写了一个自定义控件通过debug打断点发现onDraw方法一直没有被调用,于是到网上查了一下,结果需要在自定...
  • gaoqingliang521
  • gaoqingliang521
  • 2017年06月26日 10:28
  • 484
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于自定义View初始化时不执行onDraw方法的笔记
举报原因:
原因补充:

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