Android 在attrs.xml添加属性时出现 Found item Attr/****** more than one time

2024-04-29 19:04

本文主要是介绍Android 在attrs.xml添加属性时出现 Found item Attr/****** more than one time,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android 在attrs.xml添加属性时出现 Found item Attr/****** more than one time

  • 问题描述
  • 解决办法
    • 方式一
    • 方式二
  • 小结

问题描述

在Android应用开发过程中,经常需要自定义控件,并且定义控件的属性,方便灵活的修改控件的显示样式,提高代码的可重用性和拓展性。但是在attrs.xml文件定义控件的属性,编译工程时报错了。

Found item Attr/axis_x_min more than one time

attrs.xml 文件中有多个同名条目时,通常会出现Found item Attr/****** more than one time错误消息。 attrs.xml 中的每个属性名称必须是唯一的。其实就是你的attrs.xml中有同名的属性(比如line_number)。

<?xml version="1.0" encoding="utf-8"?>
<resources><declare-styleable name="ChartView1"><attr name="axis_left_min" format="float"/><attr name="axis_left_max" format="float"/><attr name="axis_right_min" format="float"/><attr name="axis_right_max" format="float"/><attr name="line_number" format="integer"/></declare-styleable><declare-styleable name="ChartView2"><attr name="axis_x_min" format="float"/><attr name="axis_x_max" format="float"/><attr name="axis_y_min" format="float"/><attr name="axis_y_max" format="float"/><attr name="line_number" format="integer"/></declare-styleable></resources>

在这里插入图片描述

解决办法

方式一

修改同名的属性,使不同控件的属性名不一样。将ChartView1控件的line_number属性改名为line_number_chart1ChartView2控件的line_number属性改名为line_number_chart2,这样就保证了属性名的唯一。

<?xml version="1.0" encoding="utf-8"?>
<resources><declare-styleable name="ChartView1"><attr name="axis_left_min" format="float"/><attr name="axis_left_max" format="float"/><attr name="axis_right_min" format="float"/><attr name="axis_right_max" format="float"/><attr name="line_number_chart1" format="integer"/></declare-styleable><declare-styleable name="ChartView2"><attr name="axis_x_min" format="float"/><attr name="axis_x_max" format="float"/><attr name="axis_y_min" format="float"/><attr name="axis_y_max" format="float"/><attr name="line_number_chart_2" format="integer"/></declare-styleable></resources>

方式二

将相同的属性定义到declare-styleable标签外面,内部只声明引用,这样不同控件就可以重复使用了。

<?xml version="1.0" encoding="utf-8"?>
<resources><attr name="line_number" format="integer"/><declare-styleable name="ChartView1"><attr name="axis_left_min" format="float"/><attr name="axis_left_max" format="float"/><attr name="axis_right_min" format="float"/><attr name="axis_right_max" format="float"/><attr name="line_number" /></declare-styleable><declare-styleable name="ChartView2"><attr name="axis_x_min" format="float"/><attr name="axis_x_max" format="float"/><attr name="axis_y_min" format="float"/><attr name="axis_y_max" format="float"/><attr name="line_number" /></declare-styleable></resources>

小结

通过上述两种方式,我们都可以解决Found item Attr/****** more than one time的问题,相对而言,更推荐方式二的解决办法。方式二可以提高同名属性的重复性和利用率。

这篇关于Android 在attrs.xml添加属性时出现 Found item Attr/****** more than one time的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946905

相关文章

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils