Android 开发小工具之:Tools 属性

http://blog.chengyunfeng.com/?p=755#ixzz4apLZhfmi

今天来介绍一些 Android 开发过程中比较有用但是大家又不常用的小工具。这些小工具可以提高 Android 应用开发的效率、还可以提高代码质量。所以还是有必要使用的。

首先介绍布局文件中的 tools 属性。

如果你用 Android Studio 创建一个简单的示例项目,在生成的布局文件中会有这么一行内容:

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

在 tools 命名空间下定义了一些属性就是我们要介绍的 tools 属性。 顾名思义,这些属性都是为编辑工具准备的,具体来说就是 Android Studio 和布局文件编译器(AAPT)。 在开发程序的时候,通过这些属性来告诉编辑器一些额外的信息。

tools:ignore

这个属性是为 Lint 准备的,属性的取值为逗号分隔的 Lint 问题 ID。告诉 Lint 在检测代码的时候,这些问题不用检测。例如:

<string name=”show_all_apps” tools:ignore=”MissingTranslation”>All</string>

tools:targetApi

这个属性也是为 Lint 准备的。和 Java 注解 @TargetApi 一样。取值可以为 Android 版本代号或者对应的整数值。例如:

<GridLayout tools:targetApi=”ICE_CREAM_SANDWICH” >

tools:locale

Lint 和 Android Studio 都会使用该属性。取值为 语言和地区缩写。如果设置该值为非英文类型,则 Studio 不会执行拼写检查。该属性通常出现在资源文件的根元素上。用来告诉 Lint 该文件应该用在那种语言环境中。 例如:values/strings.xml 文件 设置该属性为 es

<resources xmlns:tools=”http://schemas.android.com/tools” tools:locale=”es”>

上面的设置告诉工具,默认的文件夹中的资源为西班牙语而不是英语。

tools:context

Lint 和 Android Studio 都会使用该属性。出现在布局根元素中,用来告诉工具该布局文件和哪个 Activity 关联。这样在设计的时候,布局编辑器会使用相关联的 Activity 的 theme 来渲染该布局文件。取值为 manifests 文件中的 activity name 值一样。例如:

<android.support.v7.widget.GridLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools”tools:context=”.MainActivity” … >

tools:layout

该属性由 Android Studio 使用。通常用在 <fragment> 元素中,用来告诉编辑器该 fragment 使用的是哪个布局文件。

<fragment android:name=”com.example.master.ItemListFragment” tools:layout=”@android:layout/list_content” />

tools:listitem / listheader / listfooter

Android Studio 使用该属性来渲染列表元素。可以用在 AdapterView 的子 View 中。例如 <ListView>、<GridView>、<ExpandableListView> 等。这样在设计的时候,编辑器可以用指定的内容来显示预览内容。

<ListView

android:id=”@android:id/list”

android:layout_width=”match_parent”

android:layout_height=”match_parent”

tools:listitem=”@android:layout/simple_list_item_2″ />

tools:showIn

Android Studio 使用该属性。通常用在被其他布局文件引用的<include> 布局文件中。告诉编辑器该布局文件用在另外一个布局文件中。例如

<?xml version=”1.0″ encoding=”utf-8″?>

<TextView xmlns:android=”http://schemas.android.com/apk/res/android”

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

android:text=”@string/hello_world”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

tools:showIn=”@layout/activity_main” />

tools:menu

Android Studio 使用该属性。用在布局文件的根元素中,告诉编辑器在 ActionBar 上的菜单内容。取值为定义的 menu 的 id,多个 id 用逗号分隔;还可以使用定义 menu 的 xml 文件的名字。例如:

<?xml version=”1.0″ encoding=”utf-8″?>

<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:menu=”menu1,menu2″ />

tools:actionBarNavMode

Android Studio 使用该属性。用在布局文件的根元素中,告诉编辑器在 ActionBar 上的导航模式。取值为 “standard”、 “list” 和”tabs” 之一。

<?xml version=”1.0″ encoding=”utf-8″?>

<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” />

除了上面这些属性以外,标准的 Android 布局属性都可以当做 tools 属性来使用。布局编辑器用这些属性来选择布局文件。这些属性被称之为 “ 设计时布局属性 ”,他们只被布局编辑器使用,编译后的代码中不存在这些内容。

例如

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:text="@string/hello_world"
tools:text="hello world"
android:layout_width="wrap_content"
tools:layout_width="400dp"
tools:background="@android:color/holo_red_dark"
android:layout_height="wrap_content"/>
</RelativeLayout>
上面的布局文件,在布局编辑器中预览图如下:

这样做的好处是,在编辑布局文件的时候,不用为了预览效果而给真正的属性设置一些测试的值,然后当程序发布的时候,
这些测试的内容忘记删除了。例如
为了预览 EditText 的显示效果,你把一段文字设置到 text属性上:
<EditText
android:text="John Doe"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

当你发布项目的时候,却忘记了把该字符串给删除了。 如果这里面包含有比较机密的内容的话,你的秘密就被泄露出去了。 你可以用

tools:text="John Doe" 

这样在发布的时候,这些内容会自动去掉。

设计时布局属性的限制:

  • 目前只支持标准的属性,也就是依 android 命名空间下的属性。
  • 目前代码提示支持的还不是很好,建议先用 android 命名空间来编辑该属性,然后把 android 替换为 tools。
  • 设计时布局属性只能在布局文件中使用,不能在其他资源文件中使用。
  • 这类还有一些问题需要注意: https://code.google.com/p/android/issues/detail?id=46186

Android 开发小工具之:Tools 属性 (转)的更多相关文章

  1. Android 开发—— 小工具,大效率

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者:姚志锋 一.Hugo插件 -- 打印方法运行时间 首先申明下,此Hugo非 彼Hugo(Hugo是由Go ...

  2. android 开发小工具收集

    http://blog.csdn.net/tikitoo/article/details/51089422

  3. Android开发常用工具汇总

    Android开发常用工具汇总,本文章不断更新完善 一.数据库小工具Sqlite Developer  SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的, ...

  4. android 桌面小工具(Widget)开发教程

    刚学做了哥Widget,感觉不错哦,先来秀下效果(用朋友手机截的图) 这个Widget会每隔5秒钟自动切换内容和图片,图片最好使用小图,大图会导致你手机桌面(UI)线程卡顿 教程开始: 1.首先创建一 ...

  5. Android 开发常用工具合集

    在 Android 开发中经常使用到的小功能,用于记录开发的那些事^_^ 1. 获取 release 和 debug 版本的 SHA1 public static String getSHA1(Con ...

  6. Android 性能测试小工具 Emmagee

    Emmagee 是一个性能测试小工具 用来监控指定被测应用在使用过程中占用机器的CPU, 内存,流量资源的性能小工具 Emmagee 介绍 Emmagee是网易杭州研究院QA团队开发的一个简单易上手的 ...

  7. [Android Memory] Android性能测试小工具Emmagee

    转载:http://blog.csdn.net/anlegor/article/details/22895993 Emmagee是网易杭州QA团队开发的用于测试指定android应用性能的小工具.该工 ...

  8. Android开发常用工具类

    来源于http://www.open-open.com/lib/view/open1416535785398.html 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前 ...

  9. Android开发小问题总结

    Android开发遇到的小问题之小解: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

随机推荐

  1. 小甲鱼PE详解之资源(PE详解11)

    原文出自:www.fishc.com 最近一直在安排第一届鱼C 学习班的事情,忙活了好一阵子,真是对不住大家,还大家久等了,这里要跟大家说声不好意思 ^_^ 今天我们来谈谈资源部分,资源部分可以说是 ...

  2. Centos7 安装docker ce

    一. 安装docker 1.升级rpm包 yum -y update 2. 通过命令设置Docker CE 资源库: yum install -y yum-utils yum-config-manag ...

  3. AC日记——[Ahoi2009]Seq 维护序列seq bzoj 1798

    1798 思路: 维护两个标记: 乘:m  和  加:a 先下放乘,再下放加: 下放乘的时候要把子节点的加一块乘了: 开long long: 来,上代码: #include <cstdio> ...

  4. javascript解析机制——预解析

    JavaScript解析机制是什么? JavaScript解析过程分为两个阶段,一个是编译阶段,另外一个就是执行阶段. * 编译阶段         编译阶段就是我们常说的JavaScript预解析( ...

  5. Oracle的隔离级别

    隔离级别(isolation level)       隔离级别定义了事务与事务之间的隔离程度.     隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差:隔离程度越低,数据库的并发性越 ...

  6. MySQL备份工具收集

    说明:MySQL的备份不像SQL Server那么的简单,备份时需要分数据库引擎类型,现在主流的就两个:InnoDB和MyISAM,而这两种类型备份方式各不一样. MyISAM: mysqlhotco ...

  7. Mapxtreme 在64位系统运行网站,提示未能加载文件或程序集,或它的某一个依赖项

    在32位系统上开发的网站,现在需要布署到64位系统上运行,布署好后访问提示提示未能加载文件或程序集,或它的某一个依赖项.在网上搜索后,发现是64位下引用dll出现的这个问题.这个问题通常出在引用第三方 ...

  8. android 内存泄漏出现的情况

    非静态内部类的静态实例由于内部类默认持有外部类的引用,而静态实例属于类.所以,当外部类被销毁时,内部类仍然持有外部类的引用,致使外部类无法被GC回收.因此造成内存泄露. 类的静态变量持有大数据对象静态 ...

  9. linux中ps命令的用法说明

      在linux中使用ps命令可以查看有哪些进程在运行和运行的状态.进程是否结束.进程有没有僵尸.哪些进程占用了过多的资源等等. ps命令最常用的是用于监控后台进程的工作情况. 名称:ps  www. ...

  10. Spring3和Quartz2的应用实例

    /** * 任务调度类 * @author Joyce.Luo * @date 2015-3-31 下午03:32:04 * @version V3.0 * @since Tomcat6.0,Jdk1 ...