android xml 里的 app,xml中的android、app、tools你真的了解吗

在布局文件的编写中,我们经常在跟节点见到这几句代码:

910685a8ea91

这是怎么样的三兄弟.png

虽然经常见到,但从来没有好好的认识认识,今天我们就来简单的聊一下吧~

首先我们要明白一点,xmlns是xml namespace的缩写,意思是xml命名空间。

那么我们就好理解这句话是什么意思了,声明这个命名空间引用的是Android系统的,而其中的android作为前缀,是这个引用别称的意思,当然我们也可以将它换成其他的名字。

后面schemas的意思是xml文件的约束(也就是xml的书写规范,类似于模板),还有一种xml约束是DTD,但schemas相对于DTD来说克服了DTD的局限性,扩展性强。

有了他,Android Studio就会在我们编写布局文件的时候给出提示,提示我们可以输入什么,不可以输入什么。也可以理解为语法文件,或者语法判断器。

在项目需求中,我们往往使用系统自带的属性以及控件是不够的,我们可能需要导入自定义控件的一些属性,或者support支持包之类的。

为了引入自定义的属性,我们可以xmlns:前缀=http://schemas.android.com/apk/res/你的应用程序包路径,将其导入。

但现在的普遍做法是使用xmlns:app="http://schemas.android.com/apk/res-auto",因为res-auto可以引用所有的自定义包名。

tools顾名思义是工具的意思,可是我们使用这个命名空间能带来什么效果呐。

tools可以告诉Android Studio,哪些属性在运行的时候是被忽略的,只在设计布局的时候有效。

tools可以覆盖android的所有标准属性,将android:换成tools:即可;同时在运行的时候就连tools:本身都是被忽略的,不会被带进apk中。

举个栗子:

假如我们要给一个按钮设置阴影效果,可是项目的minSdkVersion是19,于是我们就会看到下面这种情况:

910685a8ea91

提示我们elevation属性是从API 21才开始有的,可是当前的最小API只有19,于是我们可以根据提示:

使用tools:ignore="UnusedAttribute",忽略警告:

910685a8ea91

使用tools:targetApi="lollipop",告诉IDE这个是属性是针对android 5.0及以上的:

910685a8ea91

虽然上面这两种做法都没有再报语法错误,可是并没有解决实际问题,打擦边球并不是最好的解决方法。

所以我们可以使用support的命名空间,support包可以为低版本的用户做一些扩充支持:

910685a8ea91

这样我们就很好的解决所有问题了,既不会报错,也能够使高低版本得到相同的显示效果。

至于tools的用法也有很多,如最常用的预览效果:

910685a8ea91

打包运行的时候并无影响,是不会看到这段文字的,仅限于IDE的预览效果~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值