自定义视图中使用自定义变量

【人工智能】架构演进:基于本体论与 LLM Agent 的供应链备件决策闭环实践 本文探讨了如何将本体论(Ontology)与大语言模型(LLM)Agent结合,构建供应链备件管理的智能决策系统。针对LLM在垂直领域存在的幻觉和逻辑缺陷问题,提出通过本体论建立结构化知识框架,形成四层架构:知识建模、动态感知、深度分析和决策闭环。系统利用图数据库实例化领域本体,融合多源数据实现实时感知,结合图谱推理和时序预测进行确定性分析,最终通过工具调用完成决策执行。技术选型推荐Gemini 1.5 Pro、Neo4j和LangChain等工具,实现从自动化到智能化的升级。该架构为工业领域提供了可解释、 阅读详情

在编写Android自定义按钮示例基础上,如果要指定字体大小产生这样的效果:

image

其实是不需要自定义变量的,可以直接使用TextView的配置属性:

<com.easymorse.textbutton.TextButton 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:layout_weight="1" android:text="电影" 
    android:gravity="center_vertical|center_horizontal" 
    android:background="@drawable/button" android:focusable="true" 
    android:clickable="true" android:textSize="22sp" />

在这里字体大小使用了sp,这里要说一下sp与dp(dip)的区别,dip是:

dp Density-independent Pixels – an abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi screen, so one dp is one pixel on a 160 dpi screen. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. Note: The compiler accepts both "dip" and "dp", though "dp" is more consistent with "sp".

不过,要是和字体有关,最好还是用sp,和dp类似,但更适合字体大小:

sp Scale-independent Pixels – this is like the dp unit, but it is also scaled by the user’s font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and user’s preference.

这里为了演示使用自定义变量,字体大小改用自定义的属性。

首先要创建变量,创建了个values/attrs.xml文件,文件名任意,但是要在values目录下:

<?xml version="1.0" encoding="utf-8"?>   
<resources>   
    <declare-styleable name="button">   
        <attr name="textSize" format="dimension" />   
    </declare-styleable>   
</resources>

根标签要是resources,定义的变量要有个名字,declare-styleable name="button">,这里定义名称为button。在这个名称里,可以有多个自定义属性。定义了个名为textSize的属性,格式是dimension,这个format指定了textSize属性的类型,只能用于定义字体大小。

在布局文件中通过自定义属性赋值:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myapp="http://schemas.android.com/apk/res/com.easymorse.textbutton"
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@drawable/background_color"> 
    <LinearLayout android:layout_width="fill_parent" 
        android:layout_height="10dip" /> 
    <LinearLayout android:layout_width="fill_parent" 
        android:layout_height="40dip"> 
        <com.easymorse.textbutton.TextButton 
            android:layout_width="fill_parent" android:layout_height="fill_parent" 
            android:layout_weight="1" android:text="电影" 
            android:gravity="center_vertical|center_horizontal" 
            android:background="@drawable/button" android:focusable="true" 
            android:clickable="true" myapp:textSize="20sp" />

 

这里在根标签中增加了:

xmlns:myapp=http://schemas.android.com/apk/res/com.easymorse.textbutton

声明了myapp这个名字空间,myapp是任意的名称,自己可以随便起名,后面的:

http://schemas.android.com/apk/res/

是固定的。再后面接的是应用的包名。

在下面自定义按钮中的:myapp:textSize,就是使用<attr name="textSize"这个变量了,给变量赋值。

还需要一个过程,就是在程序中获取到这个赋值:

public TextButton(final Context context, AttributeSet attrs) { 
    this(context, attrs, 0); 
    TypedArray typedArray=context.obtainStyledAttributes(attrs, R.styleable.button); 
    this.setTextSize(typedArray.getDimension(R.styleable.button_textSize, 15)); 
    typedArray.recycle();

 

其中,TypedArray实例是个属性的容器,context.obtainStyledAttributes()方法返回得到。AttributeSet是节点的属性集合,在本例中是<com.easymorse.textbutton.TextButton节点中的属性集合。

这句话:

typedArray.getDimension(R.styleable.button_textSize, 
                15)

将获取自定义textSize的值,如果没有,则使用默认的值,15。

最后别忘记调用:

typedArray.recycle();

作用是:

Give back a previously retrieved StyledAttributes, for later re-use.

这里的自定义属性的format,可以有很多种:

  • reference
  • string
  • color
  • dimension
  • boolean
  • integer
  • float
  • fraction
  • enum
  • flag
华为OD机考双机位C卷 - 构成正方形的数量 (Java & Python& JS & C/C++ & GO ) 华为OD机考双机位C卷 - 成正方形的数量 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。 阅读详情

相关推荐

Abaqus仿真突然中断?手把手教你解决SIGTERM/SIGINT报错(附完整命令行方案)

本文深入解析Abaqus仿真中因SIGTERM或SIGINT信号导致进程意外中断的根本原因,并提供了一套完整的命令行解决方案。通过将作业提交方式从图形界面切换到命令行,并配合关键参数设置,可以有效避免因会话空闲超时或外部干扰引发的计算中断,保障长时间仿真任务的稳定运行。

devops8pract的博客 746

Android obtainStyledAttributes获取属性值

obtainStyledAttributes是干什么的有过自定义属性或者查看过系统View相关子类源码的人可能对这个方法都不会陌生。 该方法是Context类为我们提供的获取style中特定属性值的方法。通过这个方法,我们就可以获取在style中定义的各种属性值,然后根据获取到的不同的属性值实现差异化的效果。一种典型的使用方式是: //TextView 构造方法片选代码

FengShanChuiChui的博客 1万+

量子密钥分发系统设计与实现(一):系统基本架构讨论

本文主要对量子密钥分发系统中的基础架构和基于系统的量子密钥协商过程进行了初步讨论,为后期系列文章进行铺垫。

量子领域相关话题 3896

资源类型之TypedArray

TypedArray定义在XML文件中。可以使用它来创建一组其它资源,例如drawables。注意到一组资源并不要求是相同类型的,所以可以创建一组混合类型的资源。但是我们必须知道各个数据类型在组中的具体位置以便可以使用TypedArray's的get...()方法获取每个项目。 Note:一组typed array是一个由名字属性提供(而不是XML文件名)提供的简单资源引用。这样,我们可以把ty

sean_xiang的专栏 2624

32、社交媒体大数据中的情感分析与网络欺凌检测

本文探讨了社交媒体大数据在情感分析和网络欺凌检测中的应用。情感分析有助于应对自动化带来的社会变化、促进社会包容和推动环境保护。网络欺凌作为一种严重的在线危害,其检测依赖于数据预处理、特征提取与深度学习模型(如CNN、LSTM)进行分类。文章还总结了大数据在欺诈检测、医疗、制造、交通等领域的广泛应用,并分析了数据存储、处理速度、质量和技术工具等方面的挑战,提出了相应的应对策略。未来,随着技术进步,社交媒体大数据将在更多领域发挥关键作用。

cc789的博客 91

改进yolov8|BackBone改进:PWConv、FasterNeXt替换yolov8主干网络

各位哥哥姐姐弟弟妹妹大家好,我是干饭王刘姐,主业干饭,主业2.0计算机研究生在读。和我一起来改进yolov8变身计算机大牛吧!本文中的论文笔记都是刘姐亲自整理,原创整理哦~

weixin_44379985的博客 749

Android 自定义控件之第三讲:obtainStyledAttributes 系列函数详解

在项目中开发自定义控件时,或多或少都会用到 obtainStyledAttributes(AttributeSet, int[], int, int) 或者 obtainAttributes(AttributeSet, int[]) 函数,它们的主要作用是:根据传入的参数,返回一个对应的 TypedArray ,如果小伙伴还没有看过 LZ 的第二讲,那么请自行移步 Android 自定义控

miao0967020148的专栏 2624

记录Android Studio连接华为(nova)手机鸿蒙系统踩过的坑

鸿蒙系统的华为老机子比较麻烦,坑有点多,兄弟们加油!

沉迷单车的追风少年 7922

10、视图、变量

文章目录视图简介创建视图修改视图查看视图和删除视图更新视图视图与表的对比变量分类系统变量自定义变量 视图 简介 -- 视图 /* 含义:虚拟表 MySQL5.1版本出现的新特性,是通过表动态生成的数据,只保存了SQL逻辑,不保存查询数据 应用场景: 1、多个地方用到同样的查询结果; 2、该查询结果使用的SQL语句较为复杂; */ # 查询学生中姓张的学生姓名和专业 # 以前我们的做法 USE studb; SELECT name, majorname FROM stu_info s INNER JOIN m

ShawnYue_08的博客 555

Android14 Qcom 从Framework到Driver带你打开WIFI(二)

上篇文章讲到了UI打开WIFI以后,逐步调用到加载底层驱动以及通知等相关流程。这篇接着上文继续往下看WIFI ON的后续动作。

IAYLBL的博客 766

第201期 解锁科研效率新高度:Claude 科学技能插件(claude-scientific-skills)深度体验

科研AI助手Claude Scientific Skills开源工具为Claude大模型扩展科学能力,覆盖数据可视化、数学计算、学术格式处理等科研全流程需求。该插件支持LaTeX公式生成、自动化科研图表绘制、学术文档规范校正等功能,让研究人员通过自然语言指令即可完成专业任务。项目开源可定制,支持特定学科需求扩展,目前已托管于GitHub。使用门槛低,只需配置Claude API密钥即可快速启用,帮助科研人员从繁琐技术细节中解放,聚焦核心研究创新。

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 1358

MYSQL学习(八)视图与变量

一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生产的,只保存了sql,不保存查询结果。用户变量:作用域:针对于当前会话(连接)有效,同于会话变量的作用域应用在任何地方,也就是begin end里面或begin end的外面。局部变量:作用域:仅仅在定义它的begin end中有效,应用在begin end中的第一句话!视图的可更新性和视图中查询的定义有关系,一下类型的视图是不能更新的。简化复杂的sql操作,不必知道它的查询细节。DROP VIEW 视图名,视图名..;

weixin_43208082的博客 861

InVEST模型 | HAbitat quality模块计算生境质量

 本文详细介绍使用InVEST模型中HAbitat quality模块计算生境质量,包含各个参数的含义、所需数据、数据处理以及需要各个参数注意的地方等过程。

地理空间科学的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android studio 重写窗口,Android Studio 自定义Debug变量视图的方法

我们在使用IntelliJ的IDE进行Debug时,去查看一个未重写 toString 方法的对象需要展开当前的视图层级才能看到里面的属性,而通过自定义变量视图的方式可以直接查看,很大程度上提高Debug的效率。引出问题我们在Debug查看变量时通常会遇到这种情况此时我想查看 Goods 对象里面的具体属性值,需要点击左边的展开按钮才能查看里面具体的属性值,不能直接进行查看。更糟糕的是当 Good...

weixin_30195669的博客 220

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MYSQL(三):变量、视图、存储过程的使用

有参看其他博主文章: MySQL之系统变量与用户自定义变量:https://blog.youkuaiyun.com/qq_36528734/article/details/81187863 mysql中视图的使用:https://blog.youkuaiyun.com/wujiangwei567/article/details/80549150 一、变量的介绍和使用 总体可分为两大类变量: 系统变量:包括全局变量和...

算云烟 658

【MySQL数据库】第五章(上):视图、变量

5 其他 5.1 视图 视图:MySQL从5.0.1版本开始提供视图功能。虚拟表(和普通表一样使用),并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。 应用场景: 多个地方用同样的查询结果 该查询结果使用的sql语句较复杂 视图的好处: 重用sql语句 简化复杂的sql操作,不必知道它的查询细节 保护基表的数据,提高安全性 创建语法的关键字 是否实际占用物理空间 使用 视图 create view 占用较小,只保存sql逻辑 一般用于查询 表 create t

Bryant的博客 550

视图,存储过程,变量

- 检查选项变更为local check option则只判断本视图1的条件,不用判断2视图的条件。-- cascaded具有级联性,即如果要给视图2插入数据不光要判断2的条件还要判断1的条件。-- 数据污染,即通过视图操作的数据对视图不可见,对表可见,因为创建的视图是id<=10的。insert into stu_v_2 values (18,'尹志平');insert into stu_v_2 values (9,'尹志平');-- 通过视图插入数据,也会影响表,表中也会插入。

lllllllrrrxxx的博客 99

MySQL学习笔记(六)——视图和变量

文章目录一.视图1.含义2.创建3.修改4.删除5.查看6.使用7.视图和表的对比二.变量 一.视图 1.含义 mysql5.1版本出现的新特性,本身是一个虚拟表,它的数据来自于表,通过执行时动态生成。 好处: ①简化sql语句 ②提高了sql的重用性 ③保护基表的数据,提高了安全性 2.创建 create view 视图名 as 查询语句; 3.修改 方式一: create or replace view 视图名 as 查询语句; 方式二: alter view 视图名 as 查询语句; 4.删

鑫宇的博客 328

在控制器调用$this->render()方法来输出视图

function actionLogin(){ $name = "admin";    // 加载视图 return $this->render("login",["name"=>$name]); } 第一个参数为视图名称,视图文件位置为views/控制器名称/视图文件 第二个参数是注入视图的模板变量(数组),在视图中将模板变量的键名为变量名调用 $this->render()方法会自动加载一个父模板,将指定视图内容添加到父模板的指定位置输出 如果不想加载父模板,可以调用

withcici的博客 1769
上一篇: 转 Caused by: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
下一篇: android dialog ——ProgressDialog 进度条对话框详解
mywebstudy
博客等级 码龄15年 30粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值