考虑android上的以下完美格式的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, PurpleActivity"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我看着这个并对ULR感到好奇:http://schemas.android.com/apk/res/android.因此,我尝试将其输入到我的Web浏览器的地址栏中,并尝试通过CURL获取它,但两种方法都显示它实际上并不存在.我在本地机器上的android-sdk文件夹中寻找类似于apk/res/android目录的东西,但搜索结果也没什么.所以,我想,因为这个资源实际上并不存在,也许我可以将xmlns:android行更改为我想要的任何内容.我继续把它改成了
http://schemas.android.com/apk/res/androidASDFASDFASDFASDFLKJSDFLEIE
Run Code Online (Sandbox Code Playgroud)
然后尝试重新编译我的项目.我得到了这个结果:
-resource-src:
[echo] Generating R.java / Manifest.java from the resources...
[aapt] (skipping hidden file '/Users/rutski/Desktop/purple/res/layout/.#main.xml')
[aapt] /Users/rutski/Desktop/purple/res/layout/main.xml:2: error: No resource identifier found for attribute 'orientation' in package 'androidASDFASDFASDFASDFLKJSDFLEIE'
[aapt] /Users/rutski/Desktop/purple/res/layout/main.xml:2: error: No resource identifier found for attribute 'layout_width' in package 'androidASDFASDFASDFASDFLKJSDFLEIE'
[aapt] /Users/rutski/Desktop/purple/res/layout/main.xml:2: error: No resource identifier found for attribute 'layout_height' in package 'androidASDFASDFASDFASDFLKJSDFLEIE'
[aapt] /Users/rutski/Desktop/purple/res/layout/main.xml:7: error: No resource identifier found for attribute 'layout_width' in package 'androidASDFASDFASDFASDFLKJSDFLEIE'
[aapt] /Users/rutski/Desktop/purple/res/layout/main.xml:7: error: No resource identifier found for attribute 'layout_height' in package 'androidASDFASDFASDFASDFLKJSDFLEIE'
[aapt] /Users/rutski/Desktop/purple/res/layout/main.xml:7: error: No resource identifier found for attribute 'text' in package 'androidASDFASDFASDFASDFLKJSDFLEIE'
Run Code Online (Sandbox Code Playgroud)
这让我感到困惑.如果资源不存在,那么如果我将xmlns:android值更改为其他一些不存在的资源有什么关系呢?如果确实存在,那么它在哪里?
xmlns:android="http://schemas.android.com/apk/res/android"声明XML名称空间前缀.xmlns表示它是关于命名空间声明.android是前缀.http://schemas.android.com/apk/res/android是一个URI - 一个唯一标识引用哪个名称空间的字符串.URI可以是抽象的东西(如本例所示); 它不一定是物理定位的URL.
通常,您可以自由选择实际前缀.你最有可能android用其他东西替换它仍然可以工作.
那么该属性实际意味着什么是"我们需要在http://schemas.android.com/apk/res/android这里使用命名空间中的节点,在这个文件中,我们将把该命名空间称为android.
如果在几个文件中使用相同的URI定义不同的名称空间前缀,则所有这些文件都将引用相同的名称空间 - 因为URI是相同的.前缀可以看作是用于引用实际命名空间的简写符号.前缀只能在定义它的文件中使用.
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |