全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

深入理解Android中的xmlns:tools属性

前言

安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果。

但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了text。因此为了在ide中预览效果,你必须在xml中为TextView控件设置android:text属性

<TextView

android:id="@+id/text_main"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:textAppearance="@style/TextAppearance.Title"

android:layout_margin="@dimen/main_margin"

android:text="I am a title" />

一般我们在这样做的时候都告诉自己,没关系,等写完代码我就把这些东西一并删了。但是你可能会忘,以至于在你的最终产品中也会有这样的代码。

用tools吧,别做傻事

以上的情况是可以避免的,我们使用tools命名空间以及其属性来解决这个问题。

xmlns:tools=http://schemas.android.com/tools

tools可以告诉Android Studio,哪些属性在运行的时候是被忽略的,只在设计布局的时候有效。比如我们要让android:text属性只在布局预览中有效可以这样

<TextView

android:id="@+id/text_main"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:textAppearance="@style/TextAppearance.Title"

android:layout_margin="@dimen/main_margin"

tools:text="I am a title" />

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

tools属性的种类

tools属性可以分为两种:一种是影响Lint提示的,一种是关于xml布局设计的。以上介绍的是tools的最基本用法:在UI设计的时候覆盖标准的android属性,属于第二种。下面介绍Lint相关的属性。

Lint相关的属性

tools:ignore

tools:targetApi

tools:locale

tools:ignore

ignore属性是告诉Lint忽略xml中的某些警告。

假设我们有这样的一个ImageView

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="@dimen/margin_main"

android:layout_marginTop="@dimen/margin_main"

android:scaleType="center"

android:src="@drawable/divider" />

Lint会提示该ImageView缺少android:contentDescription属性。我们可以使用tools:ignore来忽略这个警告:

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="@dimen/margin_main"

android:layout_marginTop="@dimen/margin_main"

android:scaleType="center"

android:src="@drawable/divider"

tools:ignore="contentDescription" />

tools:targetApi

假设minSdkLevel 15,而你使用了api21中的控件比如RippleDrawable

<ripple xmlns:android="http://schemas.android.com/apk/res/android"

android:color="@color/accent_color" />

则Lint会提示警告。

为了不显示这个警告,可以:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:color="@color/accent_color"

tools:targetApi="LOLLIPOP" />

tools:locale(本地语言)属性

默认情况下res/values/strings.xml中的字符串会执行拼写检查,如果不是英语,会提示拼写错误,通过以下代码来告诉studio本地语言不是英语,就不会有提示了。

<resources

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

tools:locale="it">


<!-- Your strings go here -->


</resources>

上面首先介绍了tools的最基本用法-覆盖android的属性,然后介绍了忽略Lint提示的属性。下面我们将继续介绍关于UI预览的其他属性(非android标准属性)。

注意:关于忽略Lint的属性,如果不想了解的话也没关系,因为并不影响编译,一般我都不会管这些警告。

这部分我们将继续介绍关于UI预览的其他属性(非android标准属性)。

  1. tools:context
  2. tools:menu
  3. tools:actionBarNavMode
  4. tools:listitem/listheader/listfooter
  5. tools:showIn
  6. tools:layout

tools:context

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

该属性的值是activity的完整包名

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/container"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="com.android.example.MainActivity"> <!-- ... -->

</LinearLayout>

tools:menu

告诉IDE 在预览窗口中使用哪个菜单,这个菜单将显示在layout的根节点上(actionbar的位置)。

其实预览窗口非常智能,如果布局和一个activity关联(指上面所讲的用tools:context关联)它将会自动查询相关activity的onCreateOptionsMenu方法中的代码,以显示菜单。而menu属性则可以覆盖这种默认的行为。

你还可以为menu属性定义多个菜单资源,不同的菜单资源之间用逗号隔开。

tools:menu="menu_main,menu_edit"

如果你不希望在预览图中显示菜单则:

tools:menu=""

最后需要注意,当主题为Theme.AppCompat时,这个属性不起作用。

tools:actionBarNavMode

这个属性告诉ide  app bar(Material中对actionbar的称呼)的显示模式,其值可以是

standard

tabs

list
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:actionBarNavMode="tabs" />

同样的,当主题是Theme.AppCompat (r21+, at least) 或者Theme.Material,或者使用了布局包含Toolbar的方式。  该属性也不起作用,只有holo主题才有效。

listitem, listheader 和listfooter 属性

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

<GridView

android:id="@+id/list"

android:layout_width="match_parent"

android:layout_height="wrap_content"

tools:listheader="@layout/list_header"

tools:listitem="@layout/list_item"

tools:listfooter="@layout/list_footer" />

layout属性

tools:layout告诉ide,Fragment在程序预览的时候该显示成什么样

<fragment xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/item_list"

android:name="com.example.fragmenttwopanel.ItemListFragment"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginLeft="16dp"

android:layout_marginRight="16dp"

tools:layout="@android:layout/list_content" />

tools:showIn

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# android  # xmlns  # tools  # xmlns属性  # tools的作用  # Android xmlns 的作用及其自定义实例详解  # 英语  # 只在  # 的是  # 都是  # 使用了  # 也不  # 是在  # 会有  # 带着  # 多个  # 将会  # 也没  # 我都  # 两种  # 他还  # 您可以  # 这部  # 就把  # 这样做  # 就连 


相关文章: 如何制作算命网站,怎么注册算命网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  网站制作服务平台,有什么网站可以发布本地服务信息?  如何通过服务器快速搭建网站?完整步骤解析  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  如何通过VPS建站实现广告与增值服务盈利?  建站主机空间推荐 高性价比配置与快速部署方案解析  如何设置并定期更换建站之星安全管理员密码?  在线制作视频网站免费,都有哪些好的动漫网站?  做企业网站制作流程,企业网站制作基本流程有哪些?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何通过万网虚拟主机快速搭建网站?  如何快速打造个性化非模板自助建站?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  网站专业制作公司有哪些,做一个公司网站要多少钱?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  ,想在网上投简历,哪几个网站比较好?  英语简历制作免费网站推荐,如何将简历翻译成英文?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何选择服务器才能高效搭建专属网站?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  建站VPS推荐:2025年高性能服务器配置指南  如何在搬瓦工VPS快速搭建网站?  如何规划企业建站流程的关键步骤?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  长沙企业网站制作哪家好,长沙水业集团官方网站?  网站图片在线制作软件,怎么在图片上做链接?  如何在Golang中使用replace替换模块_指定本地或远程路径  已有域名能否直接搭建网站?  C++中引用和指针有什么区别?(代码说明)  javascript中的try catch异常捕获机制用法分析  广德云建站网站建设方案与建站流程优化指南  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  如何在IIS7中新建站点?详细步骤解析  如何制作网站标识牌,动态网站如何制作(教程)?  C#如何使用XPathNavigator高效查询XML  安徽网站建设与外贸建站服务专业定制方案  香港服务器WordPress建站指南:SEO优化与高效部署策略  香港服务器建站指南:免备案优势与SEO优化技巧全解析  广平建站公司哪家专业可靠?如何选择?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何在万网ECS上快速搭建专属网站?  建站之星导航配置指南:自助建站与SEO优化全解析  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  Swift中switch语句区间和元组模式匹配  C++如何将C风格字符串(char*)转换为std::string?(代码示例) 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。