【Android】自定义View不显示的一种问题

需求

在自定义View里面添加一种颜色表示某个数据到达了某个状态

问题

颜色没有显示

问题分析

在代码中定义一种颜色和画笔

private int wathetBlue;private Paint backgroundWathetBlue;

在init方法里面初始化

wathetBlue = Color.argb(205, 165, 209, 254);backgroundWathetBlue = new Paint();
backgroundWathetBlue.setColor(wathetBlue);
backgroundWathetBlue.setStyle(Paint.Style.FILL);
backgroundWathetBlue.setAntiAlias(true);

然后提供一个方法让外界调用

public void drawBlueHeight(float shejiDepth) {sJDepth = shejiDepth;depSJ = shejiDepth / maxHeight > 1 ? 1 : shejiDepth / maxHeight;drawNowBlue = true;invalidate();
}

此时调用了【invalidate();】方法之后,系统会调用

@Override
protected void onDraw(Canvas canvas) {}

这一切都没有什么问题,但是最后却是没有显示,最后发现是因为

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);realWidth = MeasureSpec.getSize(widthMeasureSpec);height = MeasureSpec.getSize(heightMeasureSpec);if (realWidth == 0) {realWidth = ScreenUtil.dip2px(getContext(), getContext().getResources().getDimension(com.southgnss.publiclibrary.R.dimen.dp_90));height = ScreenUtil.dip2px(getContext(), getContext().getResources().getDimension(com.southgnss.publiclibrary.R.dimen.dp_314));}width = realWidth * 3 / 4;setMeasuredDimension(realWidth, height);
}

在测量的时候,这个【height 】值刚开始是0,但是我将这个值为0的时候给传值给了我需要绘制的高度计算方法里面了,导致计算的结果不准确,然在【onDraw】里面调用这个错误的数据导致绘制失败。

提醒

在【onDraw】绘制的时候,此时自定义View的长和宽都是已经获取到实际的值,所以此时的View的大小是确定的,如果有需要的话,可以在这个时候获取自定义View的长和宽,然后再进行计算。提前在【onMeasure】里面获取值进行计算的话有可能会遇到值为自定义View的长和宽为0的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5月游戏市场迎来新的体验,网易两款游戏重磅出炉

易采游戏网5月9日消息,随着科技的飞速发展,手机游戏已经成为人们休闲娱乐的重要方式。在这个领域,网易作为国内领先的游戏开发商,一直致力于为玩家带来高品质的游戏体验。近日,网易携手国际大厂Square Enix&#xff0c…

2024年数维杯高校数学建模竞赛(B题) 建模解析| 生物质和煤共热解问题的研究 |小鹿学长带队指引全代码文章与思路

我是鹿鹿学长,就读于上海交通大学,截至目前已经帮200人完成了建模与思路的构建的处理了~ 本篇文章是鹿鹿学长经过深度思考,独辟蹊径,实现综合建模。独创复杂系统视角,帮助你解决数维杯的难关呀。 完整内容可…

Flink物理分区概念与分类详解

Apache Flink是一个分布式流处理框架,它允许在大规模数据流上进行实时计算。在Flink中,数据如何在不同的任务(Task)之间传输是一个关键因素,直接影响到系统的性能和可扩展性。物理分区(Physical Partitioni…

在线教育系统平台软件,在线教育市场需求怎么样呢?

在线教育发展至今,通过互联网技术,有效地缓解了我国师资不足、优质教育资源供给不均等问题。根据速途研究院公开数据显示,中国在线教育用户规模呈稳定增长趋势,增长率也在逐年提高。我国在线教育市场需求如何? 一、市场预期&…

QML基础语法七

模型视图代理 1. 模型:数据及其结构,多种QML创建模型 2. 视图:显示数据容器,数据可以通过列表或表格的形式显示 3. 委托:控制数据如何在视图中显示,委托获取、封装了模型中每个数据,需要通过委…

创建Spring Boot项目及配置

目录 一、创建项目所需要的插件 1、安装插件 二、创建项目 三、创建项目所面临的常见问题。 1、IDEA不能识别 2、无效的发行版本 3、确认jar包是否下载成功 一、创建项目所需要的插件 1、安装插件 首先需要在IDEA插件里面搜索Spring,选择Spring Boot Helper…

如何去掉溢出内容的overflow属性滚动条

在CSS中,如果你设置了overflow属性为auto或scroll,并且内容确实超出了容器的大小,那么浏览器会自动显示滚动条。但是,如果你想在某些情况下隐藏这些滚动条,有几种方法可以尝试,但请注意,这些方法…

政安晨:【Keras机器学习示例演绎】(四十一)—— 使用预先训练的词嵌入

目录 设置 简介 下载新闻组 20 数据 让我们来看看这些数据 清洗数据并将数据分成训练集和验证集 创建词汇索引 加载预训练的词嵌入 建立模型 训练模型 导出端到端模型 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与…

Python批量修改图片文件名中的指定名称

批量处理图像时,图片名有时需要统一,本教程仅针对图片中名如:0001x4.png,批量将图片名中的x4去除,只留下0001.png的情况。 如果想要按照原图片顺序批量修改图片名,参考其它博文:按照原顺序批量…

Vue中常用指令

Vue中的常用指令 Vue中的常用指令内容渲染指令条件渲染指令事件绑定指令内联语句事件处理函数给事件处理函数传参 属性绑定指令列表渲染指令v-for中的key 双向绑定指令 Vue中的常用指令 概念:指令 是 Vue 提供的带有 v- 前缀 的 特殊 标签属性。Vue 会根据不同的【…

飞天使-k8s知识点30-kubernetes安装1.28.0版本-使用containerd方式

文章目录 安装前准备containerd 配置内核参数优化安装nerdctl以上是所有机器全部安装开始安装初始化,这步骤容易出问题!安装flannel 结果展示 安装前准备 内核升级包的md5,本人已验证,只要是这个md5值,放心升级 1ea91ea41eedb35c…

MySQL ——变量的定义和使用

DDL和DML CREATE TABLE student (id int(11) NOT NULL AUTO_INCREMENT COMMENT 学号,createDate datetime DEFAULT NULL,userName varchar(20) DEFAULT NULL,pwd varchar(36) DEFAULT NULL,phone varchar(11) DEFAULT NULL,age tinyint(3) unsigned DEFAULT NULL,sex char(2) …

硬性清空缓存的方法

前端发布代码后,我们是需要刷新页面再验证的。有时候仅仅f5 或者ctrlshiftdelete快捷键仍然有历史缓存,这时可以通过下面的方法硬性清空缓存。 以谷歌浏览器为例,打开f12,右键点击刷新按钮,选择【清空缓存并硬性加载】…

JavaScript异步编程——07-Promise实例的方法【万字长文,感谢支持】

Promise 实例的方法简介 Promise 的 API 分为两种: Promise 实例的方法(也称为:Promis的实例方法) Promise 类的方法(也称为:Promise的静态方法) Promise 实例的方法:我们需要实…

PyTorch机器学习实现液态神经网络

大家好,人工智能的发展催生了神经网络这一强大的预测工具,这些网络通过数据和参数优化生成预测,每个神经元像逻辑回归门一样工作。结合反向传播技术,模型能够根据损失函数来调整参数权重,实现自我优化。 然而&#xf…

等保测评技术方案

等保,即“网络安全等级保护”,是中国实施的一项信息安全保护制度,旨在对不同重要性的信息和信息系统实行分等级保护,保障国家安全、社会秩序以及公共利益。等保技术方案是指为了达到国家网络安全等级保护标准要求,针对…

Mock.js 问题记录

文章目录 Mock.js 问题记录1. 浮点数范围限制对小数不起效2. increment 全局共用 Mock.js 问题记录 最新写网页的时候引入了 Mock.js 来生成模拟数据; Mock使用起来很方便,具体可以参考 官网 很快就能上手, 但是这个项目最近一次提交还是在2…

SCPI控制

SCPI 定义:Standard Commands for Programmable Instruments,可编程仪器的标准命令,是一个独立于硬件的纯粹的软件标准,字符串可通过任何仪器接口进行传送。 SCP命令实际是通过ASCII字符串形式在命令与仪器进行交互。命令一般由一系列的关键字构成,有的还需要包括参数,…

oracle 修改dmp文件导入导出文件位置(DATA_PUMP_DIR)

查询dmp导入、导出文件所在位置: SELECT * FROM DBA_DIRECTORIES T WHERE T.DIRECTORY_NAME DATA_PUMP_DIR; 2.修改DATA_PUMP_DIR配置的文件位置(直接在数据库执行脚本即可): create or replace directory DATA_PUMP_DIR as /opt/tools/oracle/dmpFile/;或者通过…

誉天教育近期开班计划

云计算HCIE 晚班 2024/5/13 大数据直通车 周末班 2024/5/25 数通直通车 晚班 2024/5/27 云服务HCIP 周末班 2024/6/1 云计算HCIP 周未班 2024/6/1 RHCA442 晚班 2024/6/17 周末班:周六-周日9:00-17:00晚 班:周一到周五19:00-21:30注&…