自定义控件中 wrap_content 属性无效的分析解决

2023-11-15

问题

在自定义一个类似锁屏页面时间日期样式的控件,继承 View 的时候,发现在 xml 中使用 wrap_content 属性相当于使用了 match_parent 属性。

原因分析

进入View的源码,可以看到 onMeasure 的方法中

 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),
                getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));
 }

其中看看 getDefaultSize方法,在没有重写 onMeasure 的时候,走如下逻辑

/**
    参数 size :提供的是默认大小
    参数 measureSpec :提供的是测量规格(测量模式&测量大小)
*/
public static int getDefaultSize(int size, int measureSpec) {
        int result = size;
        int specMode = MeasureSpec.getMode(measureSpec);
        int specSize = MeasureSpec.getSize(measureSpec);

        switch (specMode) {
            case MeasureSpec.UNSPECIFIED: //自定义控件的时候用的比较少
                result 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义控件中 wrap_content 属性无效的分析解决 的相关文章

随机推荐

  • python炫酷gui界面_如何炫酷的使用Python

    Python很酷 真的很酷 但是 我们中的很多人都是从不同的编程语言开始的 尽管我们确实很容易地掌握了Python 但是我们仍然不擅长以pythonic的方式做事 本文介绍了我几年来学到的一些技巧和相同的实际示例 希望你喜欢它 1 有用的键
  • android aidl出现无法import

    当采用eclipse 写aidl时出现couldn t find import for class 原因是你import的包没有在framework aidl里parcelable过 所以解决办法很简单 找到对应api level的fram
  • 软件开发十本书

    几年前 总结了 软件测试十本书 对从事软件质量验证和确认工作的基础知识进行简介 软件花钱最多 耗时最长 投入人力和精力最大的 是在开发过程 根据个人经验 推荐软件开发相关的十本书 供入门和进阶参考 坐等拍砖员 1 代码大全 软件开发世界的
  • Java 多线程同步:volatile 关键字

    多线程基础知识 Java 内存模型 Java 中的堆内存用来存储对象的实例 堆内存是被所有线程共享的运行时内存区域 因此 它存在可见性的问题 而局部变量 方法定义的参数则不会在线程之间共享 它们不会有内存可见性问题 也不受内存模型的影响 J
  • MySQL Cluster

    MySQL Cluster数据分布 分区 两阶段提交协议及事务资源 2013 12 11 15 00 28 分类 MySQL FROM http www zrwm com p 3210 Posted on 2013 年 3 月 8 日 by
  • https网络编程——openssl安装(两个软链接库libssl、libcrypto)、openssl命令行方式实现CA和证书、介绍SSH

    参考 openssl安装方式 Ubuntu下 地址 https qingmu blog csdn net article details 115454254 spm 1001 2014 3001 5502 目录 官方网站 1 解压 2 编译
  • stable diffusion webui安装与使用(官方超简单教程)

    预备依赖 下载miniconda 教程参考 https blog csdn net weixin 43828245 article details 124768518 安装git 参考教程 https blog csdn net weixi
  • js 实现多重罗盘转动

    引子 这几天一直在忙一个可滑动的转盘的demo 网上也有类似的例子 但是根据老板的需求来改他们的代码 还不如重新写个完全符合需求的插件 想法很美好 但是新手上路 效果链接文末 需求 image 这个demo给的非常简单 能转动的地方有三处
  • 方差、标准差、均方差、均方误差区别总结

    转载 http blog csdn net Leyvi Hsing article details 54022612 一 百度百科上方差是这样定义的 variance 是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量 概率论中方差
  • Flutter 重写原生App -- 02 基础知识 一路踩坑

    Pubspec Assist 插件 快速添加 pubspec yaml 的依赖 device info 0 4 0 3 可查看当前 链接的设备是 Ios Android 并且获得设备信息 Dart 语法 https dart dev gui
  • SVN配置

    1 SVN插件下载地址 http subclipse tigris org update 1 4 x http subclipse tigris org servlets ProjectDocumentList expandFolder 2
  • 【特征工程】特征选择与特征学习

    特征选择与特征学习 在机器学习的具体实践任务中 选择一组具有代表性的特征用于构建模型是非常重要的问题 特征选择通常选择与类别相关性强 且特征彼此间相关性弱的特征子集 具体特征选择算法通过定义合适的子集评价函数来体现 在现实世界中 数据通常是
  • Python实现ACO蚁群优化算法优化LightGBM分类模型(LGBMClassifier算法)项目实战

    说明 这是一个机器学习实战项目 附带数据 代码 文档 视频讲解 如需数据 代码 文档 视频讲解可以直接到文章最后获取 1 项目背景 蚁群优化算法 Ant Colony Optimization ACO 是一种源于大自然生物世界的新的仿生进化
  • 背景差分法《python图像处理篇》

    引言 背景差分常用于运动目标检测 是一种动态检测的方法 即观察两帧图像间的差距 哪个物体存在相对运动 其基本原理就是将两幅图像做减法 只不过这里的两幅图像分为输入图像和背景图像 此方法对于动态常见特别敏感 例如监控环境下的下雪 刮风时的树叶
  • ❤ jeecgboot 使用

    jeecgboot 使用 JDictSelectTag 字典下拉去掉请选择 JDictSelectTag
  • 最近大火的ChatGPT和RPA机器人相结合会带来什么前景?

    ChatGPT是由人工智能技术驱动的自然语言处理工具 它可以通过理解和学习人类语言进行对话 并根据聊天的上下文进行互动 真正像人类一样进行聊天和交流 甚至完成撰写电子邮件 视频脚本 文案 翻译 代码 写论文等任务 ChatGPT和RPA都是
  • line-height行高的解析

  • golang 框架_Go Web 框架 Gin 实践9—将Golang应用部署到Docker

    Go语言中文网 致力于每日分享编码知识 欢迎关注我 每天一起进步 项目地址 https github com EDDYCJY go gin example 注 开始前你需要安装好 docker 配好镜像源 本章节源码在 f 20180324
  • 同花顺某v参数详解

    声明 本文章中所有内容仅供学习交流 抓包内容 敏感网址 数据接口均已做脱敏处理 严禁用于商业用途和非法用途 否则由此产生的一切后果均与作者无关 若有侵权 请联系我立即删除 目标站点 aHR0cDovL3EuMTBqcWthLmNvbS5jb
  • 自定义控件中 wrap_content 属性无效的分析解决

    问题 在自定义一个类似锁屏页面时间日期样式的控件 继承 View 的时候 发现在 xml 中使用 wrap content 属性相当于使用了 match parent 属性 原因分析 进入View的源码 可以看到 onMeasure 的方法