jp1017

jp1017

0个粉丝

78

问答

0

专栏

9

资料

jp1017  发布于  2015-08-17 19:45:57
采纳率 0%
78个问答
2450

解开安卓命名空间xmlns的面纱

朋友们,,,好!:)

今天给大家介绍下安卓里的xmlns这个玩意,这是什么东东呢?

[size=4][color=Red]xmlns,是XML Namespaces的缩写,中文名称是XML(可扩展标记语言)命名空间 。[/color][/size]

     首先是命名空间 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工程,在其清单文件的开头有这两句代码:

[attach]2797[/attach]

第一行代码:<?xml version="1.0" encoding="utf-8"?>   是xml文件的起始码,指明了版本和字符编码

我们说的是第二行代码:xmlns:android="http://schemas.android.com/apk/res/android"

这一句的含义究竟是什么呢?

上面我们讲到xmlns这个是xml命名空间的意思,那么这句话的意思也就是android这个xml命名空间的资源路径在“http://schemas.android.com/apk/res/android”里面。

那这个路径代表的究竟又是什么意思?其实http://schemas.android.com/apk/res/!这是res资源的标准前缀,后面的这个android是一个包名。也就是我们使用android命名空间的资源定义的路径在android这个包名之下。那后面我们通过android引出的属性,例如一个TextView的text值我们直接就可以通过下面的代码进行设置了:

如android:text="@string/helloworld"

这样访问res下的文件就方便了很多。:lol 

ok,that's all!

悦分享,越快乐!:handshake
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区