如何在android style文件中使用自定义属性

前几天我在项目中遇到了这样一个问题:我为项目编写了一个自定义控件,这个控件会被大量复用,所以我准备在style.xml文件中定义一个style来减少重复xml布局内容的编写,但是里面有一个自定义的控件属性,问题出现在这里,虽然自定义属性在layout布局xml中可以使用正常,但是却无法在style中定义,本来这个控件是大量服用的,style也是为了复用减少xml内容写的,我可以把自定义属性内容直接写死在自定义控件中,但是考虑到项目未来可能出现的变数,我还是准备将这个自定义属性写到style中,这样即便有其他不同样式的复用,我也只需再写一个style即可。

在layout布局中使用自定义属性是非常简单,我们只需要在xml根节点xmlns:android="http://schemas.android.com/apk/res/android" 的后面加上我们自定义控件的命名空间(栗子:xmlns:test="http://schemas.android.com/apk/res/packagename),然后就可以在自定义控件节点里自由使用自定义属性了。

我在编写style的时候,起初也以为style.xml也应该是这种使用方式,于是就在根节点添加了自定义控件的命名空间,然后就在style中开始使用自定义属性,如下:

<resources xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:test="http://schemas.android.com/res/com.zhufuing" >
    <style name="test" >
        <item name="test:name_text">hello,world!</item>
    </style>
</resources>

但是这样并不起作用,style.xml反而出现错误,报错提示如下:

error: Error: No resource found that matches the given name: attr ‘test:name_text‘.

我在网上搜索之后得到了正确的答案,其实我们在style.xml中使用自定义属性的话,不需要写自定义控件的命名空间,我们只需要在style中使用命名控件的地方换成自定义控件的包名即可(注意:是包名,不带自定义控件的名字),如下:

<resources xmlns:android="http://schemas.android.com/apk/res/android" >
    <style name="test" >
        <item name="com.zhufuing:name_text">hello,world!</item>
    </style>
</resources>

这样就可以在style文件中使用自定义属性了。

参考链接:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=316876

时间: 2024-11-06 07:30:05

如何在android style文件中使用自定义属性的相关文章

Android layout文件中 &#39;?&#39; 的作用

在Android layout文件中,属性引用资源一般使用@,例如 android:textColor="@color/white" 但在一些系统文件中我们也可以看到有这样的写法 android:textColor="?android:color/textColor" 我们知道@是引用已经定义好的资源,如@color/white.@android:color/white,那 '?' 呢?下面是文档中的解释 Referencing style attributes A

如何在Android应用程序中使用传感器(OpenIntents开源组织SensorSimulator项目)

原文地址http://blog.sina.com.cn/s/blog_621c16b101013ygl.html OpenIntents项目和可用资源介绍 [1].    项目介绍:OpenIntents项目的目的是提供一些开源的意图和接口,通过一些可以重用的组件让移动应用程序更加紧密的在一起工作.而且对于这些开源的项目,OpenIntents组织都会提供相应的源代码和示例程序展示项目如何使用. [2].     项目资源:免费开放源代码下载地址在 www.openintents.org;讨论区

如何在Android应用程序中使用传感器模拟器SensorSimulator

原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/article/details/7596864   (OpenIntents开源项目SensorSimulator) 1.      OpenIntents项目和可用资源介绍 [1].    项目介绍:OpenIntents项目的目的是提供一些开源的意图和接口,通过一些可以重用的组件让移动应用程序更加紧密的

【转】关于Android资源文件中出现百分号的问题

关于Android资源文件中出现百分号的问题 分类: Android JAVA2014-08-01 16:53 1345人阅读 评论(0) 收藏 举报 ANDROID格式化资源文件 目录(?)[+] 问题编辑strings.xml的时候 在行 [html] view plaincopy <string name="myurl">http://code.dd.com/rr?q=%rr.55</string> 或者 [html] view plaincopy <

android 布局文件中xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;

http://blog.163.com/benben_long/blog/static/199458243201411394624170/ xmlns:android="http://schemas.android.com/apk/res/android的作用是 这个是xml的命名空间,有了他,你就可以alt+/作为提示,提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为语法文件.或者语法判断器什么的 这个主要作用是在运行的时候那些控件的属性都是通过它来识别的,如果上面你写错了,

Android资源文件中各种XML的作用与解释

众所周知,XML是一种可扩展标记语言,它被用来传输和存储数据.在Android中也会随处可见XML文件,包括一个android项目不可缺少的AndroidManifest.xml清单文件,res资源文件目录下的anim/drawable/layout/menu/values中等,目录截图如下.其中清单文件中内容最多最复杂,完全可以在其他文章中再来讲解,所以本文主要讲解res目录下的XML的作用与内容. 一.anim目录 anim目录下的xml主要是用于android中的动画,包括Frame an

如何在Qt资源文件中包含exe等各种类型文件?

操作系统:Windows 10 X64 企业版 Qt: 5.8.0 QtCreater: 4.2.1 刚刚开始学习Qt,不断遇到困难和挑战,前几天在各个QQ群里询问如何在Qt的资源文件中包含和释放exe可执行文件,结果没有谁给我一个准确的答复,包括问写过图书的选手!!我现在非常鄙视写书的选手,是高傲还是为了面子,对于我的问题根本就不回答!!!不仅仅是一个写书选手这样,很多个!!!我相信很多作者都是乐于帮助别人,极少数人才这个德性!!!! Qt做为开发了这么多年的跨平台GUI开发解决方案,我相信这

Android布局文件中xml里的xmlns:的作用

一些新手经常看到布局文件中都有xmlns:android="http://schemas.android.com/apk/res/android"或者 xmlns:tools=http://schemas.android.com/tools 却不知道是什么意思. 其实它是告诉Android开发工具你准备使用Android命名空间里的一些通用属性.在所有Android XML设计文件中最外层的标记必须使用这个树形. 它可以提示你输入什么,不该输入什么,什么是对的,什么是错的,也可以理解为

Android manifest文件中的标签详细介绍

概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如: --为Java应用程序指定一个独一无二的名字. --描述程序所包括的成分,如activities, services, broadcast receivers和content providers等内容. --定义哪一个成分是主要的.比如主线程等. --声明程序正常运行所需要的权限.比如,读写SD卡等. --声明该程序的API Level,低于该API