Android-include标签减少重复布局

你将学到

1.include标签的用法
2.include标签的使用例子
3.include标签的使用注意

include标签简介

你一定经常遇到相似度很高的UI需求:比如同一种标题栏、同一个样式的弹窗、按钮…等等。
每次都重复的写一样的布局代码么?
答案肯定是:NO !!!
提高布局的复用性,可以使用include标签

使用include标签的例子

创建重用的布局

将你想重用的布局代码封装到一个文件中,这里给出一个例子:

titlebar.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width=”match_parent”
    android:layout_height="wrap_content"    // 注意点 1 将在下面讲解
    android:background="@color/titlebar_bg">

    <ImageView android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:src="@drawable/gafricalogo" />
</FrameLayout>

这里的根结点FrameLayout就是你想添加入的Layout类型

使用include引用

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/app_bg"
    android:gravity="center_horizontal">

    <include layout="@layout/titlebar"/>   // 注意点 2 将在下面讲解

    <TextView android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="@string/hello"
              android:padding="10dp" />

    ...

</LinearLayout>

引入的时候,你是可以重新覆盖源文件的一些android:layout_*属性,但是必须将android:layout_height 和 android:layout_width同时覆盖才会有效。

注意点

上文我们有两个预留的注意点,假如在注意点1处给FrameLayout设置了id,也在注意点2处给include设置了id,那么请务必保持两个id相同,否则在你findViewById的时候可能会发生空指针找不到布局文件,原因是布局的id被覆盖掉了。解决办法是:要么两个id相同,要么只设置其中一个有id。

发表评论

关闭菜单