自定义view中遇到的问题
【逃避了太久,改变了所有;想换回一点点自由。写博客,记东西】
自定义view是android开发中高手进阶的一个过程,自定义view分为绘制view、组合控件、继承控件三种情况。
一、绘制自定义控件:
绘制自定义控件:所谓绘制自定义控件的意思就是整个控件都是自己绘制出来的。绘制自定义view的步骤:
1.定义要绘制view的属性;2.在要绘制view的构造方法中获取自定义好的属性;3.[onMesure]测量;4.OnDraw。
其中第三步有些情况下不是必选的,直接调用系统自己的OnMeasure就可以了。
在自定义view布局中一定要引入项目package。xmlns:custom=“http://schemas.android.com/apk/res/package值”,其中xmlns:custom的值是包中自定义的属性,即<declare-styleable>中所定义的属性。
我在编写的过程中遇到的问题就是构造方法的问题,因为有一个或者两个参数的构造方法系统都会自己调用,有三个参数的构造方法系统不会自己调用,需要自己显式调用。
现在没有重写OnMeasure方法,系统默认是设置好的宽高,如果没有设置宽高,系统会设置成macth_parent。所以在没有指定宽高时,需要重写OnMeasure方法,
重写之前先了解MeasureSpec的specMode,一共三种类型:
EXACTLY:一般是设置了明确的值或者是MATCH_PARENT
AT_MOST:表示子布局限制在一个最大值内,一般为WARP_CONTENT
UNSPECIFIED:表示子布局想要多大就多大,很少使用
EXACTLY:一般是设置了明确的值或者是MATCH_PARENT
AT_MOST:表示子布局限制在一个最大值内,一般为WARP_CONTENT
UNSPECIFIED:表示子布局想要多大就多大,很少使用