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来指定布局预览中显示。
可以同时添加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" />
更多信息,参见压缩资源。