weixin_42657753 2019-08-04 20:09 采纳率: 0%
浏览 192

measurespec理解,到底啥意思 啊,我快疯了

measurespec到底是啥意思啊?比如子view的measurespec是由父容器的measurespec和自身的layout参数所
创建的;父容器的measurespec我理解成对父容器对子view的一个约束,那么子view也就是最底层view的measurespec
又是什么意思,它的测量模式又是啥意思,比如我现在一个子view的测量模式是exactly,测量size为100dp,它无法指定子view了啊,那它的测量模式是干嘛使得;

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-10 22:06
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    MeasureSpec 是 Android 中用来控制视图大小的接口。MeasureSpec 有三个主要字段:width, height, 和 match_parent

    • width:表示要设置的宽度,单位可以是 dp(密度独立像素)或 px(点)。如果值是负数,那么就是自动设置。
    • height:同上,高度。
    • match_parent:表示这个测量项应该根据其父元素来计算尺寸,也就是说,如果有一个父元素设置了 match_parent,那么子元素也会被设置为 match_parent

    在 Android Studio 的布局编辑器中,你可以看到一些预定义的 MeasureSpec 值:

    • match_parent: 指定视图应根据其父元素的大小进行调整。
    • match_content: 指定视图应与其父元素相同大小,但允许稍微缩放以适应其内容。
    • fill_parent: 视图将填充其父元素的整个可用空间。
    • wrap_content: 视图将占据其父元素剩余的空间,除非其内容超出父元素的高度或宽度。

    measure() 方法接受一个 MeasureSpec 参数,用于指定要使用的测量规格。然后,Android Studio 将使用这些规格来动态地调整视图的大小。

    例如:

    View view = findViewById(R.id.my_view);
    LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    
    // 使用 match_parent
    view.measure(MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.EXACTLY));
    
    // 使用 match_content
    view.measure(MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST));
    

    在这个例子中,我们创建了一个 LayoutParams 实例,并设置了 LayoutParams.WRAP_CONTENTLayoutParams.WRAP_CONTENT。然后,我们使用这两个规格来测量视图的大小,并将其设置为 MeasureSpec 类型。

    评论

报告相同问题?