Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LinearLayout.onMeasure-设置LinearLayout的高度

LinearLayout.onMeasure-设置LinearLayout的高度

作者头像
None_Ling
发布于 2018-10-24 07:11:40
发布于 2018-10-24 07:11:40
1.6K00
代码可运行
举报
文章被收录于专栏:Android相关Android相关
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    if (!allFillParent && widthMode != MeasureSpec.EXACTLY) {
        maxWidth = alternativeMaxWidth;
    }
    
    maxWidth += mPaddingLeft + mPaddingRight;

    // Check against our minimum width
    maxWidth = Math.max(maxWidth, getSuggestedMinimumWidth());
    
    setMeasuredDimension(resolveSizeAndState(maxWidth, widthMeasureSpec, childState),
            heightSizeAndState);

    if (matchWidth) {
        forceUniformWidth(count, heightMeasureSpec);
    }
  1. 判断allFillParent以及widthMode,如果满足的话,那么maxWidth则设为alternativeMaxWidth
  2. maxWidth再加上左右的间距
  3. 比较和背景图的大小
  4. 通过resolveSizeAndState获取widthMeasureSpec,通过setMeasuredDimension设置LinearLayout的宽高
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.05.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
简单的场景分析LinearLayout 源码
一个 LinearLayout 垂直方向上包含两个 TextView 和一个 RelativeLayout
木子杂志
2020/08/29
6430
简单的场景分析LinearLayout 源码
LinearLayout.onMeasure-Weight属性的转换
// Either expand children with weight to take up available space or // shrink them if they extend beyond our current bounds int delta = heightSize - mTotalLength; if (delta != 0 && totalWeight > 0.0f) { float weightSum = mWeightSum > 0.
None_Ling
2018/10/24
5210
Android界面绘制流程(一)
上次看到ViewRootImpl在performTraversals()方法中先后调用performMeasure(),performLayout(),performDraw()方法,我们先看performMeasure()方法 ViewRootImpl#performTraversals() ... if (mWidth != frame.width() || mHeight != frame.height()) { mWidth = frame.w
aruba
2020/07/03
6200
Android界面绘制流程(一)
带你彻底搞懂-View的工作原理!
1.ViewRoot对应ViewRootImpl类,是连接WindowManager和DecorView的纽带。View的三大流程是通过ViewRoot完成的。 在ActivityThread中,当Activity对象被创建完毕时,会将DecorView添加到Window中,同时会创建ViewRootImpl,且ViewRootImpl和DecorView会建立关联。如下代码,WindowManagerGlobal的addView()方法:
胡飞洋
2020/07/23
1.2K0
带你彻底搞懂-View的工作原理!
自定义View(八)-View的工作原理- View的measure
从上一篇中。同Activity的布局加载了解了整个View树加载的流程。最后是通过View的三大流程来实现布局的显示的。那么我们这篇来讲下布局的三大流程之一-->measure。
g小志
2018/09/11
7680
自定义View(八)-View的工作原理- View的measure
LinearLayout.onMeasure-获取子View总高度
for (int i = 0; i < count; ++i) { final View child = getVirtualChildAt(i); if (child == null) { mTotalLength += measureNullChild(i); continue; } if (child.getVisibility() == View.GONE) {
None_Ling
2018/10/24
1.4K0
Android高级进阶之路【一】Android中View绘制流程浅析
一个View,从无到有会走三个流程,也就是老生常谈的measure,layout,draw三流程;
做个快乐的码农
2021/11/17
1.3K0
Android高级进阶之路【一】Android中View绘制流程浅析
【ViewPager2避坑系列】瞬间暴增数个Fragment
作者:HitenDev 链接:https://juejin.im/post/5ce15668f265da1bbf68ed52
Rouse
2019/07/30
7.7K0
Android界面绘制原理
从普遍的意义上来讲,以上这段代码就是设置WindowManager和DecorView的关系,继续看:
大大大大大先生
2018/09/04
1.5K0
Android界面绘制原理
深入解析Android中View的工作原理
Android中的任何一个布局、任何一个控件其实都是直接或间接继承自View实现的,当然也包括我们在平时开发中所写的各种炫酷的自定义控件了,所以学习View的工作原理对于我们来说显得格外重要,本篇博客,我们将一起深入学习Android中View的工作原理。
老马的编程之旅
2022/06/22
1K0
深入解析Android中View的工作原理
安卓 View 的工作流程
measure过程要分情况来看,如果只是一个原始的View,那么通过measure方法就完成了其测量过程,如果是一个ViewGroup,除了完成自己的测量过程外,还会遍历去调用所有子元素的measure方法,各个子元素再递归去执行这个流程,下面针对这两种情况分别讨论。
acc8226
2022/05/17
4500
安卓 View 的工作流程
Android中View是如何绘制的
View的绘制过程从ViewRootImpl.performTraversals()方法开始。
对话、
2022/02/22
2.3K0
Android ImageView分析并展开
对于它的使用。除了注意ScaleType的理解和设置外,还须要注意其它一些问题,比方设置一张大的背景图片内存占用和释放等。
全栈程序员站长
2022/07/06
4500
Android ImageView分析并展开
Carson带你学Android:手把手带你深入学习自定义View Measure过程
具体请看文章:Android自定义View基础:MeasureSpec类到底是什么?
Carson.Ho
2022/03/24
3330
Carson带你学Android:手把手带你深入学习自定义View Measure过程
Android自定义View:MeasureSpec的真正意义与View大小控制
自定义View是Android开发中最普通的需求,灵活控制View的尺寸是开发者面临的第一个问题,比如,为什么明明使用的是WRAP_CONTENT却跟MATCH_PARENT表现相同。在处理View尺寸的时候,我们都知道最好在onMeasure中设定好自定义View尺寸,那么究竟如何合理的选择这个尺寸呢。直观来说,可能有以下问题需要考虑:
看书的小蜗牛
2018/06/29
1.6K0
Android自定义View:MeasureSpec的真正意义与View大小控制
View的工作原理
在 WindowManagerGlobal 的 addView(View view, ViewGroup.LayoutParams params, Display display, Window parentWindow) 方法中,创建了 ViewRootImpl 对象,将 ViewRootImpl 和 DecorView 相关联:
俞其荣
2022/07/28
1.2K0
View的工作原理
LinearLayout.onMesaure-计算LinearLayout的高度
if (useLargestChild && (heightMode == MeasureSpec.AT_MOST || heightMode == MeasureSpec.UNSPECIFIED)) { mTotalLength = 0; for (int i = 0; i < count; ++i) { final View child = getVirtualChildAt(i); if (
None_Ling
2018/10/24
6900
自定义View Measure过程 - 最易懂的自定义View原理系列(2)
测量规格(MeasureSpec) = 测量模式(mode) + 测量大小(size)
Carson.Ho
2019/02/22
9350
Android自定义View中的onMeasure、onLayout和onDraw方法解析
在Android开发中,我们经常需要自定义View来实现特定的界面效果。要实现一个自定义View,我们需要了解并掌握onLayout、onMeasure和onDraw这三个关键方法。本文将详细介绍这三个方法的用法和解释,并给出两个自定义View的案例。
陆业聪
2024/07/23
4650
Android自定义View中的onMeasure、onLayout和onDraw方法解析
View 绘制源码分析
这里的measure方法为final 所以不可重写,该方法主要是用来计算出view自身的实际大小,并设置宽高。
Yif
2019/12/26
4180
相关推荐
简单的场景分析LinearLayout 源码
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验