安卓开发之创建可复用的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元素了。

时间: 2024-10-30 08:45:15

安卓开发之创建可复用的UI组件的相关文章

Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法

原文:Win10 IoT C#开发 2 - 创建基于XAML的UI程序 及 应用的三种部署方法 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一章我们讲了Raspberry安装Win10 IoT系统及搭建Visual Studio 2015开发环境的方法(http://www.cnblogs.com/cloudtech/p/5562120.html)

Android布局技巧之创建可重用的UI组件_Android

Android平台提供了大量的UI构件,你可以将这些小的视觉块(构件)搭建在一起,呈现给用户复杂且有用的画面.然而,应用程序有时需要一些高级的视觉组件.为了满足这一需求,并且能高效的实现,你可以把多个标准的构件结合起来成为一个单独的.可重用的组件. 例如,你可以创建一个可重用的组件包含一个进度条和一个取消按钮,一个Panel包含两个按钮(确定和取消动作),一个Panel包含图标.标题和描述等等.简单的,你可以通过书写一个自定义的View来创建一个UI组件,但更简单的方式是仅使用XML来实现. 在

Android布局技巧之创建可重用的UI组件

Android平台提供了大量的UI构件,你可以将这些小的视觉块(构件)搭建在一起,呈现给用户复杂且有用的画面.然而,应用程序有时需要一些高级的视觉组件.为了满足这一需求,并且能高效的实现,你可以把多个标准的构件结合起来成为一个单独的.可重用的组件. 例如,你可以创建一个可重用的组件包含一个进度条和一个取消按钮,一个Panel包含两个按钮(确定和取消动作),一个Panel包含图标.标题和描述等等.简单的,你可以通过书写一个自定义的View来创建一个UI组件,但更简单的方式是仅使用XML来实现. 在

jQuery-EasyUI v1.2.3发布 为网页开发提供常用UI组件

jQuery easyui 为网页开发提供了一堆的常用UI组件,包括菜单.对话框.布局.窗帘.表格.表单等等逐渐 下图是一个具有布局效果的窗口: 这个东西的使用难度不大...是jquery的风格,但有点模仿EXT. 有这样几个问题: 1.新东西,各种插件不全,比如没有日期输入框.. 2.一些小问题.. 1)他的datagrid使用起来,有可能列标题和列内容对不齐 2)如果已经弹出了对话框,而这个对话框又要触发消息对话框,这个时候有问题..消息对话框会在之前那个对话框下面 3)使用第三方日期插件会

WEBJX推荐10个带有漂亮UI组件的JavaScript框架

文章简介:十个拥有丰富 UI 组件的 JavaScript 开发框架. 如今,网上有各种各样的JavaScript框架用来简化 Web 应用开发.这些框架都提供了一些核心的特性,例如 DOM 操作,动画,事件处理以及 Ajax 交互,但不是都带有 UI 组件.今天这篇文章向大家推荐的10个JavaScript框架提供了丰富的 Web UI 组件,帮助你构建一致,可靠以及高度交互的漂亮用户界面. ExtJS ExtJS 是最流行的 JavaScript 框架之一,提供了非常丰富的 UI 组件,包括

十个拥有丰富 UI 组件的JavaScript开发框架

如今,网上有各种各样的 JavaScript 框架用来简化 Web应用开发.这些框架都提供了一些核心的特性,例如 DOM 操作,动画,事件处理以及 Ajax 交互,但不是都带有 UI 组件.今天这篇文章向大家推荐的10个 JavaScript 框架提供了丰富的Web UI组件,帮助你构建一致,可靠以及高度交互的漂亮用户界面. ExtJS ExtJS 是最流行的 JavaScript 框架之一,提供了非常丰富的 UI 组件,包括高性能的数据表格.图表.选项卡.弹窗.工具条和菜单等等整套的 Web

android java-【急】安卓开发·创建安卓模拟器遇到问题

问题描述 [急]安卓开发·创建安卓模拟器遇到问题 小白一只..配置了各种变量之后创建安卓模拟器,创到一半卡住了.卡住的步骤见下图.画圈的选项为什么没法选?没法选就没法下一步啊. 怎么办呐?求各位前辈解答. 解决方案 解决方案二: 不要用这个模拟器 去下个genymotion 模拟器 那个好用 解决方案三: 尽量不要用AVD,用真机测试

安卓 开发-【急】安卓开发·创建安卓模拟器的问题(补充图)

问题描述 [急]安卓开发·创建安卓模拟器的问题(补充图) 小白一只..配置了各种变量之后创建安卓模拟器,创到一半卡住了.卡住的步骤见下图.画圈的选项为什么没法选?没法选就没法下一步啊. 怎么办呐?求各位前辈解答.(?_?) 解决方案 没有虚拟CPU,即镜像文件,你看看我这个选择,你试一试 解决方案二: http://www.cnblogs.com/yc-755909659/p/4080645.html 多学学如何查阅资料. 解决方案三: 对于镜像文件,在配置是也是需要安装的,有可能你没有安装,你

安卓开发-我用安卓1.6创建了一个项目,layout下面什么都没有~怎么回事~

问题描述 我用安卓1.6创建了一个项目,layout下面什么都没有~怎么回事~ 正在学安卓开发,但是为什么只有选择4.4版本的安卓SDK才能自动创建Activity.我用安卓1.6创建了一个项目,layout下面什么都没有~怎么回事~