我们在布局文件中定义一个线性布局时一般都会
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".matrix.MatrixActivity">
<TextView
android:id="@+id/tvWave"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffc"
android:gravity="center"
android:padding="10dp"
android:text="波浪动画" />
<TextView
android:id="@+id/tvMatrix"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ccf"
android:gravity="center"
android:padding="10dp"
android:text="矩阵变换" />
</LinearLayout>
但是我们有仔细考虑过每一行的作用吗,这一篇文章就仔细探索下每一行的实际意义。
<?xml version="1.0" encoding="utf-8"?>
version="1.0" 声明用的xml版本是1.0
encoding="UTF-8" 声明用xml传输数据的时候的字符编码,假如文档里面有中文,编码方式不是UTF-8,传输过去再解码的话中文就会是乱码
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns是XML Namespaces的缩写,中文名称是XML命名空间。
没有这句话就不能设置 android:***** 等属性
所以接下来所有的系统控件我们都可以使用android:***** 等属性
xmlns:app="http://schemas.android.com/apk/res-auto"
使用系统控件以及使用相应的属性都没问题了,但是对于自定义view以及自定义view的默认属性我们该怎么办呢
在网上查找资料并且实践的时候发现demo里有使用
xmlns:myxmlns="http://schemas.android.com/apk/res/com.xxx.xxx"
在as引用的时候我们发现了一串提醒
现在统一用:
xmlns:app=”http://schemas.android.com/apk/res-auto”
(app为自定义的名字)
我们使用最新推荐的方法就可以使用我们的自定义view以及自定义view属性了
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".matrix.MatrixActivity">
<com.vivian.bezierview.pathmeasure.DashBoardView
android:layout_width="match_parent"
android:layout_height="3dp"
app:text="11"
app:textSize="12dp" />
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="myCustomerView">
<attr name="text" format="string" />
<attr name="textColor" format="color" />
<attr name="textSize" format="dimension" />
</declare-styleable>
</resources>
xmlns:tools="http://schemas.android.com/tools"
用tools设置的默认值,只在预览时有用,不会影响运行时
因此,设计时可以用 tools 覆盖所有已存在于 android 命名空间中的属性(无法覆盖自定义属性)
tools:context
上面的布局文件
tools:context=".matrix.MatrixActivity"
用来记录这个布局和哪个Activity相关。
这样在布局文件中,按住Ctrl+点击鼠标左键,可以定位到相关的Activity。
tools:layout
这个属性通常设置在 fragment 标签,用于在布局时预览fragment布局文件的预览图。
当然如果你在代码里设置的布局不是预览的布局,最终运行效果还是以代码返回为准
tools:showIn
这个属性设置在被别的布局引用的布局里。允许你指定一个布局包裹此布局,在设计时这个指定布局将显示在此布局的外面。
我们一般都是这样使用一个include标签
但是需要对照着Include标签里的内容并且对照父布局时就很麻烦
引用tools:showin标签就可以在子布局里实时预览效果了。
tools:listitem / listheader / listfooter
可以给ListView (或者其他 AdapterView 像 GridView, ExpandableListView 等) 设置列表项、HeaderView和FooterView
一般情况下我们无法实时预览item布局在listview中的位置