学习自定义View

1. OnMeasure()

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);}

这个方法中的返回值 代表测量模式加上具体数值

int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);

使用这两个方法可以分别取到模式和数值

使用

getDefaultSize(100, widthMeasureSpec);

可以取到数值(如果是UNSPECIFIED就设置为默认值)


父布局尽量设置为线性布局(父布局改成LinearLayout,而不要放在RelativeLayout。因为Relativelayout中,onLayout函数是直接通过RelativeLayout.LayoutParams来决定的,换句话说,不管你的setMeasuredDimension函数设置多大的尺寸,RelativeLayout还是以xml中的布局文件为主。当然了,setMeasuredDimension设置的值跟getMeasuredWidth()、getMeasuredHeight()是一致的。)

但是如果是RelativeLayout, 使用setMeasuredDimension(100,100); 也是好用的, 目前猜测, 在onOnMeasure中,调用setMeasuredDimension 设置时, 几次必须是传一样的数值.

猜你喜欢

转载自blog.csdn.net/qq_36029400/article/details/80250680