【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源码中提取出来的:

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

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

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




你可能感兴趣的:(android)