[译]Android Tools属性

来源:互联网 发布:linux 物理内存大小 编辑:程序博客网 时间:2024/05/17 06:02

Android tools属性
https://developer.android.com/studio/write/tool-attributes.html

Android Studio在tools命名空间中支持一些XML属性来开关设计时功能和编译时行为。当构建应用时,编译工具会删除这些属性从而不会影响apk大小和运行行为。

为了使用这些属性,将tools命名空间添加到每个XML文件的根元素,使用方式如下:

<RootTag xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools" >

错误处理属性

以下属性帮着过滤lint警告消息。

tools:ignore

目标: 任何元素
使用: Lint
这个属性接收逗号分隔的lint问题ID列表
例如,可以告知tools忽略MissingTranslation错误

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

tools:targetApi

目标: 任何元素
使用: Lint
这个属性功能与Java代码中的@TargetApi注解相同:对元素指定支持的API级别。
告知tools,元素只用于指定的或更高的API级别。如果元素或它的属性在指定的minSdkVersion API级别不适用,它将停止lint产生警告。
例如因为GridLayout只适用于API级别14及以上,你可以使用它。

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    tools:targetApi="14" >

tools:locale

目标: <resources>

使用: Lint, Android Studio编辑器
通知tools给定<resources>元素的默认语言/区域是什么,来避免拼写检查器的警告。该值必须是有效的区域设置限定符。
例如,可在values/strings.xml文件中添加来指定默认字符串的语言是西班牙语而不是英语:

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

设计时视图属性

以下属性定义了布局特性,这些特性只在Android Studio布局预览时可见。

tools: instead of android:

目标: <View>
使用: Android Studio布局编辑器
在布局预览中,使用前置tools:插入例子数据代替带属性android:。在开发期希望开到布局预览可以使用这个属性。
例如,在运行时设置android:text属性,或者希望查看非默认值得布局,可以添加tools:text来指定布局预览中显示。
图1. **tools:text**属性在布局预览中设置"Google Voice"
可以同时添加android:tools:命名空间的属性。
也可以使用tools:属性来在布局预览中取消一个属性。

<Button    android:id="@+id/button"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="First" /><Button    android:id="@+id/button2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="Second"    tools:visibility="invisible"  />

tools:context

目标: 任何根<View>
使用: Lint, Android Studio布局编辑器
这个属性声明布局默认关联的Activity。这使得需要知晓Activity的功能在编辑器或布局预览可用。

可以使用manifest文件中的dot前缀指定Activity类名。

<android.support.constraint.ConstraintLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    tools:context=".MainActivity" >

tools:layout

目标: <fragment>
使用: Android Studio布局编辑器
这个属性声明哪个布局在布局预览时画到fragment中。
例如:

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

tools:listitem / tools:listheader / tools:listfooter

目标: <AdapterView> (<ListView>的子类)
使用: Android Studio布局编辑器
这个属性指定在布局预览中显示列表的项,头部和尾部的布局。
例如:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@android:id/list"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:listitem="@layout/sample_list_item"    tools:listheader="@layout/sample_list_header"    tools:listitem="@layout/sample_list_footer" />

注意: 这个属性在Android Studio 2.2对ListView不工作,但在2.3中解决了(问题215172)。

tools:showIn

目的: 布局中的任何根<View>引用<include>

使用: Android Studio布局编辑器
允许指定一个布局就像include那样,这样可以预览这个文件就像他嵌入到父布局中。
例如:

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

现在布局预览显示这个TextView布局好像它显示在activity_main不居中。

tools:menu

目的: 任何根<View>
使用: Android Studio布局编辑器
这个属性指定在布局预览的AppBar中显示的菜单。该值可意识1个活多个菜单ID,以逗号分隔。例如:

<?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" />

资源压缩属性

以下属性允许启用严格引用检查,并声明在使用资源缩减时是保留还是丢弃某些资源。
为了启动资源压缩,在build.gradle文件中设置shrinkResources为true。

android {    ...    buildTypes {        release {            shrinkResources true            minifyEnabled true            proguardFiles getDefaultProguardFile('proguard-android.txt'),                    'proguard-rules.pro'        }    }}

tools:shrinkMode

目标: <resources>
使用: 带资源压缩的构建工具
这个属性允许你指定构建工具是否使用“安全模式”或“严格模式”
模式使用安全模式(shrinkMode="safe")。为了使用严格模式,添加shrinkMode="strict"<resources>标签,如下所示:

<?xml version="1.0" encoding="utf-8"?><resources xmlns:tools="http://schemas.android.com/tools"    tools:shrinkMode="strict" />

当启用严格模式,需要使用tools:keep来保持那些真实需要但被删除的资源,使用tools:discard来明确删除更多资源。
更多信息,参见压缩资源。

tools:keep

目标: <resources>
使用: 带资源压缩的构建工具
当使用资源压缩来删除无用资源时,这个属性允许保持指定资源。
为了使用它,在资源目录创建一个带<resources>标签的xml文件,由tools:keep属性指定每个要保持的资源并以逗号分隔。

<?xml version="1.0" encoding="utf-8"?><resources xmlns:tools="http://schemas.android.com/tools"    tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />

更多信息,参见压缩资源。

tools:discard

目标: <resources>
使用: 带资源压缩的构建工具
当使用资源压缩来删除无用资源时,这个资源允许手动指定要丢弃的资源。
为了使用它,在资源目录创建一个带<resources>标签的xml文件,由tools:keep属性指定每个要丢弃的资源并以逗号分隔。

<?xml version="1.0" encoding="utf-8"?><resources xmlns:tools="http://schemas.android.com/tools"    tools:discard="@layout/unused_1" />

更多信息,参见压缩资源。

0 0