Android onMeasure

简介: Android onMeasureimport android.content.Context;import android.

Android onMeasure


import android.content.Context;
import android.graphics.Color;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {
    public MyView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        this.setBackgroundColor(Color.RED);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //假设设置View的默认宽高最小为100。
        int width = measureWidth(100, widthMeasureSpec);
        int height = this.getDefaultSize(100, heightMeasureSpec);

        //设置最终测量结果。
        setMeasuredDimension(width, height);
    }

    private int measureWidth(int size, int measureSpec) {
        int result = size;
        int specMode = MeasureSpec.getMode(measureSpec);//解析出模式。
        int specSize = MeasureSpec.getSize(measureSpec);

        switch (specMode) {
            case MeasureSpec.UNSPECIFIED:
                break;

            //设置了android:layout_width="wrap_content"
            case MeasureSpec.AT_MOST:
                result = specSize;
                break;

            //设置了android:layout_width="match_parent"或一个具体的dp/pix值。
            case MeasureSpec.EXACTLY:
                result = size;
                break;
        }

        return result;
    }
}

相关文章
|
Android开发
android组件调用onMeasure时报空指针
android组件调用onMeasure时报空指针
256 0
|
Android开发 存储
|
XML Android开发 数据格式
Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2)
Android横竖屏切换View设置不同尺寸或等比例缩放的自定义View的onMeasure解决方案(2) 附录文章1以xml布局文件方式实现了一个view在横竖屏切换时候的大小尺寸缩放,实现这种需求,也可以使用自定义View的onMeasure方法实现。
2630 0
|
XML Android开发 数据格式
Android自定义ViewGroup:onMeasure与onLayout(1)
Android自定义ViewGroup:onMeasure与onLayout(1) Android自定义一个ViewGroup,需要重写ViewGrouo里面的两个最重要的回调函数onMeasure()与onLayout()。
1329 0
|
前端开发 Android开发
Android学习自定义View(五)——自定义ViewGroup及其onMeasure()的理解
MainActivity如下:package cc.testviewstudy5; import android.os.Bundle; import android.
1158 0
|
11月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1887 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
11月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1207 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章