安卓开发之创建可复用的UI组件
来源: 阅读:970 次 日期:2014-08-21 16:07:55
温馨提示: 小编为您整理了“安卓开发之创建可复用的UI组件”,方便广大网友查阅!

Android平台提供了广泛的UI可视组件---widget,把这些小的可视的构件组合到一起,就可以给用户提供复杂而有用的界面。但是,应用程序经常需要一些高级可视组件,要满足这样的需求,并要达到高效的目的,可以把一些标准的widget组合成一个新的可复用的组件。

例如,包含一个进度条和一个取消按钮的操作进度表示组件;包含两个按钮的面板(取消和确认操作);带有一个图标、标题和说明的面板等等。通过编写定制的View类能够很容易的创建UI组件,但是使用XML会更加容易。

在Android XML布局文件中,每个标签都对应于一个实际的类实例(这个类始终是View类的子类),Android的UI工具集中还有三个特殊的标签,它们没有对应的View实例:<requestFocus />、<merge />和<include />。本文展示如何使用<include />标签来创建纯粹的XML可视组件。有关如何使用<merge />的信息,请看“合并布局”的文章,它跟<include />

组合起来使用,功能会更强大。

顾名思义,<include />标签是要在当前布局中包含另一个XML布局。这个标签的使用就像下例显示的那样简单,例子中直接引用了Android的Home应用程序的源代码:

<com.android.launcher.Workspace

android:id="@+id/workspace"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

launcher:defaultScreen="1">

<includeandroid:id="@+id/cell1"layout="@layout/workspace_screen"/>

<includeandroid:id="@+id/cell2"layout="@layout/workspace_screen"/>

<includeandroid:id="@+id/cell3"layout="@layout/workspace_screen"/>

</com.android.launcher.Workspace>

在<include />中只有layout属性是必须的。这个属性的值不带有android命名空间的前缀,它是希望要包含的布局文件的引用。在例子中,相同的布局被包含了三次。这个标签还能够覆盖一些被包含布局的属性。上例中的android:id指定了被包含布局的根View的id;如果定义了一个新的id,那么被包含布局的这个id也会被覆盖。类似的,可以覆盖所有的布局参数。就意味着任何android:layout_*属性都可以在<include />标签中使用。以下示例中,相同的布局被包含了两次,但只有第一次覆盖了布局属性:

<!-- override the layout height and width -->

<includelayout="@layout/image_holder"

android:layout_height="fill_parent"

android:layout_width="fill_parent"/>

<!-- do not override layout dimensions; inherit them from image_holder -->

<includelayout="@layout/image_holder"/>

警告:如果要覆盖布局的尺寸,就必须同时覆盖android:layout_height和android:layout_width属性---不能只覆盖高度或只覆盖宽度。如果只覆盖其中一个,不会有任何效果。没有覆盖的属性,依然会继承源布局中的属性设置。

在需要根据设备的配置来定制UI部分时,这个标记时特别有用的。例如,Activity的主布局可以被放到layout/目录中,然后包含保存在layout-land/和layout-port/目录中的另外布局,这样就可以在横屏和纵屏的布局中共享大多数的UI元素了。

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map