我是靠谱客的博主 可爱吐司,最近开发中收集的这篇文章主要介绍自定义控件不显示,,,,,,填坑,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

自定义控件分为继承View和继承ViewGroup,两者不同。

1、继承View  必须重写 onLayout() 、onDraw()

因为View相当于没什么形状的控件,需要你去重写onDraw() 去自己画出来。重写onLayout() 为了指定 画在哪里。

2、继承ViewGroup  必须重写  onMeasure()、onLayout()

因为ViewGroup需要添加view进去,这里的view是指Android已经帮你画好的控件。但是手机不知道这个控件应该画多大,画在什么位置。所以要重写这个两个方法。而不用重写onDraw()。


下面说继承ViewGroup  我爬过的坑。

  1、重写onMeasure()方法,一定要在最后设置这个自定义控件的测量值   setMeasuredDimension();

2、如果给自定义控件,加入的控件还是ViewGroup的控件组,(继承ViewGroup的也算,如LinearLayout)。在重写的onMeasure()中,也一定要对 自定义控件的 childs 测量。如下代码 : child.measure(child.getWidth(),child.getHeight())   否则会导致控件不显示  

   因为自定义控件的 子控件还是继承ViewGroup的控件 所以还是需要测量大小。(自己的理解,不一定对。搜了许久没有看到合理解释)

3、关于setMeasuredDimension()   参数的选择。这个方法是设置 自定义控件 的大小。所以如果自定义控件的属性是 match_parent或者固定的数值,直接写 onMeasure()的两个参数就行,widthMeasureSpec和heightMeasureSpec   如果自定义控件的属性是  warp_content  就需要测量子控件的大小,把所有子控件所需要的长宽 当成参数,写到这个方法里。

最后

以上就是可爱吐司为你收集整理的自定义控件不显示,,,,,,填坑的全部内容,希望文章能够帮你解决自定义控件不显示,,,,,,填坑所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部