Android 布局文件之命名空间

引言

大家都知道Android 中都有命名空间这个说法,但是那些是命名空间呢?他们有什么用处?我们如何真确的使用Android命名空间?这里我们就来探究一下。

Android 命名空间

首先,我们需要知道的是Android命名空间值出现再Android 的xml文件中。
在xml 文件中,顶部会出现一个:
xmlns:android=“http://schemas.android.com/apk/res/android” 内容,这个就是一个命名空间。
其中:xmlnx 指的是 xml NameSpace 的缩写。

Android 命名空间的分类

Android 的命名空间分为 :

  • android命名空间
  • tools命名空间
  • auto命名空间

android命名空间

android命名空间,指向的是 http://schemas.android.com/apk/res/android,这里我们可以修改命名空间的名称但是不可以修改他的指向,否则会在项目中无法使用。这里如果修改了命名空间的名称那么下方使用到命名空间的地方也需要全部修改。

tools:命名空间

tools命名空间有两种使用情况。其中第一种为影响Lint显示,第二种为覆盖ui显示。

影响Lint显示

首先我们需要知道Lint是什么?
lint 就是一个Android Studio 提供的代码扫描工具。他可以检查我们代码中所包含的隐患,然后进行显示。当然我个人认为Lint工具是挺不错的,但是不要完全相信他,否则会添加很多的无用代码。当然,也会删除很多有用的代码。
这里说完Lint,我们转回真题。

影响Lint 显示的内容分为以下几种:

tools:ignore:告诉Lint忽略xml中的提醒。

tools:targetApi:忽略版本警告。让在高版本控件在xml文件使用但是却不报出警告。

tools:locale:默认情况下res/values/strings.xml中的字符串会执行拼写检查,如果不是英语,会提示拼写错误,通过以下代码来告诉studio本地语言不是英语,就不会有提示了。格式为:'tools:locale =“ languageCode”。但是我自己却发现不知道在什么时候在本地的string.xml 没有了这些,但是却仍然可以在studio 中找到。

覆盖ui显示

tools:context:
context属性其实正是的称呼是activity属性,有了这个属性,ide就知道在预览布局的时候该采用什么样的主题。同时他还可以在android studio的java代码中帮助找到相关的文件。该属性的值是activity的完整包名。

tools:menu:
告诉IDE 在预览窗口中使用哪个菜单,这个菜单将显示在layout的根节点上。如果布局和一个activity关联(指上面所讲的用tools:context关联)它将会自动查询相关activity的onCreateOptionsMenu方法中的代码,以显示菜单。而menu属性则可以覆盖这种默认的行为。你还可以为menu属性定义多个菜单资源,不同的菜单资源之间用逗号隔开。如果你不希望在预览图中显示菜单则:可以用使用tools:menu=""。最后需要注意,当主题为Theme.AppCompat时,这个属性不起作用。

tools:actionBarNavMode
这个属性告诉ide app bar(Material中对actionbar的称呼)的显示模式,其值可以是standard
tabs
list
同样的,当主题是Theme.AppCompat (r21+, at least) 或者Theme.Material,或者使用了布局包含Toolbar的方式。 该属性也不起作用,只有holo主题才有效。

tools:layout : 只有fragment 中使用才可以,可以呈现出他想要的内容。tools:layout告诉ide,Fragment在程序预览的时候该显示成什么样。(好像只有fragment 可以使用viewpager ,recyclerview 等控件试过,不起作用)

listitem, listheader 和listfooter 属性
顾名思义就是在ListView ExpandableListView等的预览效果中添加头部 尾部 以及子item的预览布局。

ools:showIn
该属性设置于一个被其他布局的布局的根元素上。这让您可以指向包含此布局的其中一个布局,在设计时这个被包含的布局会带着周围的外部布局被渲染。这将允许您“在上下文中”查看和编辑这个布局。需要 Studio 0.5.8 或更高版本。

auto命名空间

Android 给用户留出来的自定义命名控件,现在有特别多的地方使用到了这个命名控件。比如约束控件 ConstraintLayout AppBarLayout CoordinatorLayout 等。
这里的内容是 :
http://schemas.android.com/apk/res-auto。它代表的是你现在应用的包名。如果你选哪个使用自己的包名也可以。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值