1462
- 收藏
- 点赞
- 分享
- 举报
解开安卓命名空间xmlns的面纱
朋友们,,,好!:)
今天给大家介绍下安卓里的xmlns这个玩意,这是什么东东呢?
xmlns,是XML Namespaces的缩写,中文名称是XML(可扩展标记语言)命名空间 。
首先是命名空间 Namespace这个概念,我们在学习C++和C#的时候,记得都有使用到这个东西,首先命名空间是用来组织和重用代码的编译单元。如同名字一样的意思,NameSpace(名字空间)的出现是因为人类可用的单词数太少,并且不同的人写的程序可能出现变量重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。
在C++代码里我们总会看到这样的一句代码在整个文件的头部位置“using namespace std”,这表示的是该文件使用的是标准C++库中定义的名称为std的命名空间中的标识符;同样在C#中我们会用到using system来引用系统的命名空间,来使用int、bool这些标识符。而在Java里面,我们使用的都是class,而且同一个包名下的class不能重名,那基本上和命名空间的处理相似,但却不是命名空间这个概念,import对应的package来实现对应的class的调用。
这里说的Android命名空间的概念不是基于Java的而是对应xml文件来说的,也就是xmlns这个,我们打开一个Android工程,在其清单文件的开头有这两句代码:

第一行代码: 是xml文件的起始码,指明了版本和字符编码
我们说的是第二行代码:xmlns:android="http://schemas.android.com/apk/res/android"
这一句的含义究竟是什么呢?
上面我们讲到xmlns这个是xml命名空间的意思,那么这句话的意思也就是android这个xml命名空间的资源路径在“[url]http://schemas.android.com/apk/res/android[/url]”里面。
那这个路径代表的究竟又是什么意思?其实[url]http://schemas.android.com/apk/res/[/url]这是res资源的标准前缀,后面的这个android是一个包名。也就是我们使用android命名空间的资源定义的路径在android这个包名之下。那后面我们通过android引出的属性,例如一个TextView的text值我们直接就可以通过下面的代码进行设置了:
如android:text="@string/helloworld"
这样访问res下的文件就方便了很多。:lol
ok,that's all!
悦分享,越快乐!:handshake
今天给大家介绍下安卓里的xmlns这个玩意,这是什么东东呢?
xmlns,是XML Namespaces的缩写,中文名称是XML(可扩展标记语言)命名空间 。
首先是命名空间 Namespace这个概念,我们在学习C++和C#的时候,记得都有使用到这个东西,首先命名空间是用来组织和重用代码的编译单元。如同名字一样的意思,NameSpace(名字空间)的出现是因为人类可用的单词数太少,并且不同的人写的程序可能出现变量重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。
在C++代码里我们总会看到这样的一句代码在整个文件的头部位置“using namespace std”,这表示的是该文件使用的是标准C++库中定义的名称为std的命名空间中的标识符;同样在C#中我们会用到using system来引用系统的命名空间,来使用int、bool这些标识符。而在Java里面,我们使用的都是class,而且同一个包名下的class不能重名,那基本上和命名空间的处理相似,但却不是命名空间这个概念,import对应的package来实现对应的class的调用。
这里说的Android命名空间的概念不是基于Java的而是对应xml文件来说的,也就是xmlns这个,我们打开一个Android工程,在其清单文件的开头有这两句代码:

第一行代码: 是xml文件的起始码,指明了版本和字符编码
我们说的是第二行代码:xmlns:android="http://schemas.android.com/apk/res/android"
这一句的含义究竟是什么呢?
上面我们讲到xmlns这个是xml命名空间的意思,那么这句话的意思也就是android这个xml命名空间的资源路径在“[url]http://schemas.android.com/apk/res/android[/url]”里面。
那这个路径代表的究竟又是什么意思?其实[url]http://schemas.android.com/apk/res/[/url]这是res资源的标准前缀,后面的这个android是一个包名。也就是我们使用android命名空间的资源定义的路径在android这个包名之下。那后面我们通过android引出的属性,例如一个TextView的text值我们直接就可以通过下面的代码进行设置了:
如android:text="@string/helloworld"
这样访问res下的文件就方便了很多。:lol
ok,that's all!
悦分享,越快乐!:handshake
我来回答
回答0个
时间排序
认可量排序

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片
相关问答
-
2020-04-17 16:24:01
-
2015-08-19 21:45:26
-
12015-08-17 21:09:26
-
42015-10-14 18:49:25
-
32015-08-17 20:38:04
-
2015-08-07 21:22:46
-
2020-07-07 17:58:02
-
2015-12-09 13:18:28
-
2019-12-05 16:21:34
-
2015-08-31 10:02:50
-
2015-08-05 14:51:39
-
2015-08-17 20:11:57
-
2019-01-13 11:15:59
-
2015-08-05 18:29:58
-
2015-08-03 20:18:40
-
2015-08-05 18:05:47
-
2015-08-04 20:13:23
-
2016-07-18 15:12:22
-
2015-08-21 16:53:44
无更多相似问答 去提问

点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认