Android tools命名空间 & Android app命名空间
Android xml 命名空间
tools命名空间是什么?
xmlns:tools="http://schemas.android.com/tools"
tools命名空间是用于在开发阶段,在IDE中预览xml界面用的,实际运行的时候,会被忽略。
layout
tools:layout仅仅是告诉编辑器,Fragment在程序预览时的布局。
Context
一般在根布局文件中会出现 tools:context = 某个activity名称。
举例:tools:context=“.activity.ScenarioActivity”
由于布局文件,可以给不同的Activity使用,不同的Activity可以设置不同的theme,所以在预览时是无法得知布局的theme的,必须指定一个Activity才行,然后布局文件,就会使用该Activity的theme来展示。
app 命名空间
假设现在有两个版本的 ShareActionProvider 的定义,一个是在Android framework下,另外一个在Android v7 support library 中。
你想要支持的最新SDK的版本为10。 然而ShareActionProvider 仅仅在Andriod Framework 大于等于 14的版本中才有。那怎样支持版本10-13呢?这时候就需要使用Android support library了。
修改 build.gradle文件,导入support library:
dependencies {
...
compile 'com.android.support:appcompat-v7:21.0.2'
}
如果你的项目,使用了在framework旧版本不支持的属性(比如actionProviderClass 和showAsAction)。这时候你就需要support library 中自定义的属性,为了使用这些自定义的属性,你需要使用app 命名空间。 名为android的命名空间的是当前SDK 版本的Android Framework的属性(这里使用的Android Framework 的版本号为14)。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_share"
android:title="@string/action_share"
app:showAsAction="always"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider" />
</menu>
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:theme="@style/ToolbarTheme"
app:title="@string/activity_scenario_title"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
?attr/colorPrimary 最前面的?表示根据用户选择的主题(黑暗模式),来切换属性值。
colorPrimary 的定义在styles.xml中。
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
</style>
</resources>
更多推荐
所有评论(0)