[译]Android Tools属性

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值