尽管Android提供了各种组件来实现小而可复用的交互元素,你也可能因为布局需要复用一个大组件。为了高效复用完整布局,你可以使用<include/>和<merge/>标签嵌入另一个布局到当前布局。所以当你通过写一个自定义视图创建独立UI组件,你可以放到一个布局文件里,这样更容易复用。
复用布局因为其允许你创建可复用的复杂布局而显得非常强大。如,一个 是/否 按钮面板,或带描述文本的自定义进度条。这同样意味着,应用里多个布局里共同的元素可以被提取出来,独立管理,然后插入到每个布局里。
创建可复用布局
如果你已经知道哪个布局需要重用,就创建一个新的xml文件来定义布局。如,下面是一个来自G-Kenya代码库里定义标题栏的布局,它可以被插到每个Activity里:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width=”match_parent” android:layout_height="wrap_content" android:background="@color/titlebar_bg"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/gafricalogo" /> </FrameLayout>
根视图应该刚好和你在其他要插入这个视图的视图里相应位置一样。
使用<include/>标签
在你要添加可复用布局的布局里,添加<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"/> <TextView android:layout_width=”match_parent” android:layout_height="wrap_content" android:text="@string/hello" android:padding="10dp" /> ... </LinearLayout>
你同样可以覆盖所有的布局参数(android:layout_*属性)
<include android:id=”@+id/news_title” android:layout_width=”match_parent” android:layout_height=”match_parent” layout=”@layout/title”/>
可是,如果你要用include标签覆盖布局属性,为了让其他属性生效,就必须覆盖android:layout_height和android:layout_width。
使用<merge/>标签
<merge/>标签帮助你排除把一个布局插入到另一个布局时产生的多余的View Group.如,你的被复用布局是一个垂直的线性布局,包含两个子视图,当它作为一个被复用的元素被插入到另一个垂直的线性布局时,结果就是一个垂直的LinearLayout里包含一个垂直的LinearLayout。这个嵌套的布局并没有实际意义,而且会让UI性能变差。
为了避免插入类似冗余的View Group,你可以使用<merge/>标签标签作为可复用布局的根节点,如:
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/> </merge>
现在,当你使用include标签插入这个布局到另一个布局时,系统会忽略merge标签,直接把两个Button替换到include标签的位置。
本文向大家介绍Android布局技巧之include、merge与ViewStub标签的巧用,包括了Android布局技巧之include、merge与ViewStub标签的巧用的使用技巧和注意事项,需要的朋友参考一下 前言 在开发中UI布局是我们都会遇到的问题,随着UI越来越多,布局的重复性、复杂度也会随之增长。 相信大家经常听到include、merge、ViewStub这样的标签,官方也提到
问题内容: 更新说明: 上面的示例 正常工作 ,因为版本1.0-rc4 解决 了需要不必要的变量的问题。 原始问题: 我完全按照文档中的描述进行操作,但不起作用: main.xml: button.xml: MyActivity.java: 如何获得按钮? 问题答案: 问题在于所包含的布局没有被视为数据绑定布局。要使其成为一体,您需要传递一个变量: button.xml: main.xml: 然后
主要内容:创建动作类:,创建视图,配置文件如果有两个列表A和B的值,A1,A2和B1,B2。合并列表,会给出A1,B1,A2,B2。 创建动作类: 首先,让我们创建一个简单的类叫做Employee.java,它看起来像: Employee类有两个属性 - name 和 department,我们也有两个员工名单 - employees 和contractors。我们有一个方法叫做getRecruitmentDecider,返回Decide
我试图学习WP小部件创建。在教程网站上,这是发布- 标题 我对这部分感到困惑-for="消息" 这意味着什么“message”只是一个类似的类或ID,将在CSS中设置样式?还是我没有得到正确的信息?
主要内容:创建动作类:,创建视图,配置文件Struts 的 include 标签和JSP include标记非常相似,它很少使用。我们已经看到了如何将一个Struts动作到一个jsp使用<s:action>标签的输出。 <s:include>标签略有不同。它可以进入一个jsp输出包括一个jsp,servlet或任何其他资源(其他的东西比一个Struts动作)。类似<jsp:include>,但它允许您将参数传递给被包含的文件,它是Stru
一、简介 本章节主要介绍PHPCMS内置模块标签,标签说明及自定义调用数据的方式 二、目录 PC标签使用说明 PC标签保留参数 功能模块 工具箱