【Android外文翻译 - 03】创建可复用的UI组件

原文地址:http://developer.android.com/resources/articles/layout-tricks-reuse.html
——转载请注明出处,谢谢。

Android平台提供了非常丰富的UI widget和可视化结构块,可以混合利用它们来展现给用户复杂的、可用的界面。然而,Android应用通常需要简单、明了的可视化组件。想要高效地满足这个要求,可以把多重标准的widget混合成一个独立并可复用的组件。

举个例子,你可以创建一个可复用的组件,它包含进度条(progress bar) ;取消按钮(cancel button);包含两个按钮的面板;包含图标,标题和描述的面板;等等。可以很简单的自定义一个View来创建UI组件,但是,可以简单地仅仅使用 XML来完成这项任务。

在XML布局文件中,每一个标签都和一个实际的类实例(这个类通常是View的子类)组成了映射关系。UI工具提供了3个特别的标签,这些标签并不是和唯一地View实例相映射。它们是<requestFocus />, <merge /> 和 <include />.这片文章主要展示如何使用<include />去创建干净的XML可视化组件。当和<include />一起使用时,<merge />会更有效。如果想要更多地了解如何使用<merge />,可以查看Merging Layouts这篇文章。

<include />元素就像它的名字那样,它包含了另外一个XML布局。下面的例子明确地展示了如何使用这个标签,这个例子是从the Home application源码中提取出来的:

<com.android.launcher.Workspace android:id="@+id/workspace" android:layout_width="fill_parent" android:layout_height="fill_parent" launcher:defaultScreen="1"> <include android:id="@+id/cell1" layout="@layout/workspace_screen" /> <include android:id="@+id/cell2" layout="@layout/workspace_screen" /> <include android:id="@+id/cell3" layout="@layout/workspace_screen" /> </com.android.launcher.Workspace>

在<include />标签中,仅仅layout属性是必须的。这个属性并不包含Android的命名空间前缀,它是一个你想要包含的布局文件的引用。在这个例子中,想用的布局在同一行中被包含了3次。这个标签同时也允许你重写一些被包含布局的属性值。上面的例子展示了如何使用android:id去指定被包含布局的根视图,也可以重写如果已经定义了id的被包含布局。同样地,可以重写所有的布局参数。这意味着,任何android:layout_*属性都能被<include /> 使用。这里有一个例子,同样的视图被包含了两次,但只有第一次被包含的视图重写了布局属性。

<!-- override the layout height and width --> <include layout="@layout/image_holder" android:layout_height="fill_parent" android:layout_width="fill_parent" /> <!-- do not override layout dimensions; inherit them from image_holder --> <include layout="@layout/image_holder" />

注意:如果你想改写布局的尺寸,你必须同时重写android:layout_height 和android:layout_width,不能仅仅重写高度或宽度。如果只重写了一次,那么这将不会生效。

当你想根据设备的配置来指定部分UI的时候,这个标签会非常有用。例如,Activity的主布局文件可能被放置在layout/文件夹下,它可能包含另外的不同风格的布局,这些布局位于layout-land/ 和 layout-port/下面。这就允许在横屏和竖屏之间共享大部分的UI组件。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值