Android 的原生的抽象布局一共有3个 include   ViewStub    merge ,每一个都很强大,让我们在实际开发中省去不少时间

< include> 标签    一个布局重用的标签  在material design 的设计风格中,每一个activity 都会有一个风格一样的title  ,如果每一个xml文件你都要写一边title的布局,不仅浪费时间,修改起来还非常麻烦,每一个文件都要修改,简单的使用方法

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#693"><ImageView android:id="@+id/iv_include"android:layout_width="50dp"android:layout_height="50dp"android:layout_gravity="center_vertical"/><TextView android:id="@+id/tv_include"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是标题"android:layout_gravity="center"/>
</FrameLayout>自己随便写了一个布局文件 ,看做是一个ActionBar  ,在同一个app中所欲的activity都要,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><include layout="@layout/item_title_include"/></LinearLayout>

在这里的include正需要一个layout的属性  如果给他添加了id属性,子布局的id节点就变了

ImageView iv_include = (ImageView)findViewById(R.id.iv_include);
TextView tv_include = (TextView)findViewById(R.id.tv_include);
iv_include.setBackgroundResource(R.drawable.icon_64);
tv_include.setText("注册2");            

在布局使用时直接findViewById就可以了,和普通的view没有区别

<viewstub>标签  ,这种标签常常和ListView这种控件使用,  viewstub 标签在整个布局加载过程中并没有infalte ,如果想要强制加载viewstub标签,必须调用

stubview.inflate()的方法,非常适合做ListView的emptyview ,只有在listview的数据为空时才显示,其他时候隐藏

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/empty_tv"android:layout_width="match_parent"android:layout_height="match_parent"android:textColor="#000"android:textSize="20sp"android:text="未找到图片资源"android:gravity="center"/>

简单的一个textview  设置了一下字体和颜色,

<FrameLayout android:layout_width="match_parent"android:layout_height="match_parent"><GridView android:id="@+id/gv_photo"android:layout_width="match_parent"android:layout_height="wrap_content"android:verticalSpacing="10dp"android:horizontalSpacing="10dp"android:cacheColorHint="#00000000"android:listSelector="#00000000"android:fadeScrollbars="true"android:numColumns="2"android:background="#fff"></GridView><ViewStub android:id="@+id/vs"android:layout_width="match_parent"android:layout_height="match_parent"
<span style="white-space:pre">      </span>android:inflateId="@+id/inflate_id"android:layout="@layout/empty_photo"/>
</FrameLayout>

这里我使用的GridView 其实效果是一样的

                ViewStub vs=(ViewStub)findViewById(R.id.vs);vs.inflate();
<span style="white-space:pre">      </span>View view=findViewById(R.id.inflate_id);TextView empty_tv = (TextView)view.findViewById(R.id.empty_tv);empty_tv.setOnClickListener(this);empty_tv.setText("未找到图片资源");
<span style="white-space:pre">      </span>listview.setEmptyView(view);

这里面需要注意的是  在viewstub 使用的过程中,如果需要为其中的控件设置点击事件必须要inflate(), 而且

还需要在xml中配置inflateId ,在调用inflate()之后,按照inflateId找到这个被inflate控件就可以随便使用了

在这里和普通的view的使用方法是一样的,为了给他设置一个点击方法,我在初始化view的时候就把他inflate起来了,否则使用控件空指针

< merge> 标签   减少视图图层, 布局顶结点是FrameLayout且不需要设置background或padding等属性,可以用merge代替,因为Activity内容试图的parent view就是个FrameLayout,所以可以用merge消除只剩一个。在使用include时,使用merge当作该布局的顶节点,这样在被引入时顶结点会自动被忽略,而将其子节点全部合并到主布局中。

Android 抽象布局介绍和简单的使用相关推荐

  1. Android UI -- 布局介绍(布局包括FrameLayout, LinearLayout, RelativeLayout, GridLayout)

    首先介绍常用布局类 FrameLayout 最简单的布局管理器. 这个布局管理类有几个特性: 添加组件默认在左上角的. 如果添加多个组件会叠加到一起,并且都在左上角.(可以通过一gravity属性改变 ...

  2. Android抽象布局——include、merge 、ViewStub

    在布局优化中,Androi的官方提到了这三种布局<include />.<merge />.<ViewStub />,并介绍了这三种布局各有的优势,下面也是简单说一 ...

  3. android layout布局 有哪些,Android 常用布局 介绍与使用

    读前思考 学习一门技术或者看一篇文章最好的方式就是带着问题去学习,这样才能在过程中有茅塞顿开.灯火阑珊的感觉,记忆也会更深刻. 有哪些常用的布局? 每一种布局有何特点与不同? 布局上如何优化? 1. ...

  4. android studio sugar,Android | Sugar 的介绍和简单使用

    在看过三个版本(对就是版本)greenDao教程最终发现AIDE无法使用带有注解的库的时候,我是稍有点绝望的. 同时也萌发了自己对网络教程的感慨:还是看官方文档吧官方文档我爱你. 然后呢,不想用sql ...

  5. Android 优化布局层次结构

    前面介绍过使用HierarchyViewer和Android lint来优化我们的程序,这一篇算是总结性的,借助一个小例子来说用怎么优化应用布局.这个例子是android官网给出的,作者也当一把翻译. ...

  6. 简单的Android XML布局使用

    Android XML布局 前言 今天我们来简单介绍一下Android的XML布局以及三种常见的XML布局 目录 1.XML布局的优点 在XML文件中设计UI可以更好地将应用的外观与控制应用行为的代码 ...

  7. Android:线性布局介绍,线性布局weight属性,线性布局微调参数gravity,线性布局divider

      LinearLayout:线性布局 一.线性布局介绍 新建一个工程 然后我们默认的布局,是相对布局, 相对布局的意思是我的控件可以在里面随意放置 那如果把这个RelativeLayout 改了呢? ...

  8. Android抽象任务管理框架QTaskManager及其使用方式介绍

    一.概述 QTaskManager是一个对抽象任务进行调度.分配及管理的简化管理框架,支持并行执行任务.顺序执行任务.按时执行任务.串行执行任务等基本任务操作. NOTICE:框架是基于Android ...

  9. Android AccountManager 账户同步管理简单介绍

    Android AccountManager 账户同步管理简单介绍 文章目录 Android AccountManager 账户同步管理简单介绍 前言 AccountManager 简介 如何让自己的 ...

最新文章

  1. react 让滚动条一直在下面_Ink 2.0 发布:命令行应用程序的 React
  2. 直播 | 丁霄汉:结构重参数化与通用视觉模型的基本设计元素
  3. Hdu 4920矩阵乘法(内存访问的讲究)
  4. torch.clamp()
  5. /bin/bash^M: bad interpreter
  6. 多线程---条件变量
  7. java sortedlist 固定容量_Java8 使用 stream().sorted()对List集合进行排序的操作
  8. instr like 效率_新型固井替代技术 提高井建效率
  9. 中国数字墨水行业市场供需与战略研究报告
  10. 自定义 C++ 中的 range() 函数
  11. 下一代企业IT架构:云原生架构
  12. java 卡密_【java实现点卡生成】
  13. 小米线刷 mysql_小米6刷机(线刷)第三方ROM——LineageOS
  14. 浅谈大数据广告下个人隐私保护,开发者视角的广告原理
  15. 其他干货——文章投稿之图片格式-位图vs.矢量图
  16. Cpp--string常用函数用法总结
  17. 改造:Ueditor编辑器插入外链视频支持手机播放和上传本地音乐
  18. 【青少年编程】【二级】绘制五彩缤纷的多瓣花
  19. Kubernetes 污点和容忍
  20. Vue 富文本wangEditor3 (自动保存 快捷保存 激活工具栏...

热门文章

  1. js构造函数、原型与继承深入
  2. My Presentation
  3. 多云简介:它意味着什么以及如何使用它?
  4. 基于骁龙820A系统的自动驾驶发展趋势
  5. VirtualBox 虚拟机无法启动
  6. IDEA如何执行一个包内的程序时不报另一个包内程序的错误 IDEA如何只编译运行一个包内的程序
  7. 根据字符串查找数字对应的月份
  8. 最新美团网数据抓取实战。
  9. 利用 74390 设计一个模 6 计数器,要求从 000 计数至 101,利用D触发器使其暂态的高电平清零信号延长而稳定
  10. 计算矩阵幂次的一般性方法