View

介绍

View 在 Android 中可以理解为视图。它占据屏幕上的一个矩形区域,负责提供组件绘制和事件处理的方法。如果把 Android 界面比喻成窗户,那么每块玻璃都是一个 view,如图 3.1 所示。View 类是所有的 UI 组件的基类。(View类位于android.view包中;文本框组件TextView是View类的子类,位于android.widget包中)

XML属性

在 Android 中,View 类及其子类的相关属性,既可以在 XML 布局文件中进行设置,也可以通过成员方法在 Java 代码中动态设置。View 类常用的属性及对应的方法如表 3.1 所示。

XML属性 方法 描述
android:background setBackgroundResource(int) 设置背景,其属性值为 Drawable 资源或者颜色值
android:clickable
setClickable(boolean)
设置是否响应单击事件,其属性值为 boolean 型的true 或者 false
android:elevation setElevation(float) Android API 21 新添加的,用于设置 z 轴深度,其属性值为带单位的有效浮点数
android:id setId(int)  设置组件的唯一标识符 ID,可以通过findViewById() 方法获取
android:longClickable  setLongClickable(boolean) 设置是否响应长单击事件,其属性值为 boolean 型 的 true 或者 false
android:minHeight/ Width setMinimumHeight(int)/ Width 设置最小高度/ 宽度,其属性值为带单位的整数
android:onClick 设置单击事件触发的方法
android:padding setPaddingRelative(int,int,int,int) 设置 4 个边的内边距
android:paddingBottom / End / Start / Top setPaddingRelative(int,int,int,int)  设置底边 / 右边 / 左边 / 顶边 的内边距
android:paddingLeft / Right setPadding(int,int,int,int)
设置左边 / 右边的内边距
android:visibility setVisibility(int)  设置 View 的可见性

方法

performClick和callOnclick的区别

//调用该方法时,不用用户手动点击,直接触发View的点击事件
public boolean callOnClick()

ViewGroup

ViewGroup 在 Android 中代表容器。如果还用窗户来比喻的话,ViewGroup 就相当于窗户框,用于控制玻璃的安放,如图 3.2 所示。ViewGroup 类继承自 View 类,它是 View 类的扩展,是用来容纳其他组件的容器,但是由于 ViewGroup 是一个抽象类,所以在实际应用中通常是使用 ViewGroup的子类来作为容器,比如布局管理器。

ViewGroup 控制其子组件的分布时(例如,设置子组件的内边距、宽度和高度等),还经常依赖于 ViewGroup.LayoutParams 和 ViewGroup.MarginLayoutParams 两个内部类,下面分别进行介绍。

1.ViewGroup.LayoutParams

ViewGroup.LayoutParams 类封装了布局的位置、高和宽等信息。它支持 android:layout_height和 android:layout_width 两个 XML 属性,它们的属性值,可以使用精确的数值,也可以使用 FILL_PARENT(表示与父容器相同)、MATCH_PARENT(表示与父容器相同,需要 API 8 或以上版本才支持)或者 WRAP_CONTENT(表示包裹其自身的内容)指定。

2.ViewGroup.MarginLayoutParams

ViewGroup.MarginLayoutParams 类用于控制其子组件的外边距。它支持的常用 XML 属性如表

XML属性 描述
android:layout_marginBottom / Top / Left / Right 设置底/ 顶 / 左 / 右外边距
android:layout_marginEnd  该属性为 Android 4.2 新增加的属性,设置右外边距
android:layout_marginStart 该属性为 Android 4.2 新增加的属性,用于设置左外边距

在 Android 中,所有的 UI 界面都是由 View 类和 ViewGroup 类及其子类组合而成的。在ViewGroup 类中,除了可以包含普通的 View 类外,还可以再次包含 ViewGroup 类。实际上,这使用了 Composite(组合)设计模式。View 类和 ViewGroup 类的层次结构如图 3.3 所示。

View和ViewGroup相关推荐

  1. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  2. 【Android 应用开发】自定义View 和 ViewGroup

    一. 自定义View介绍 自定义View时, 继承View基类, 并实现其中的一些方法. (1) ~ (2) 方法与构造相关 (3) ~ (5) 方法与组件大小位置相关 (6) ~ (9) 方法与触摸 ...

  3. View和ViewGroup常用方法

    2019独角兽企业重金招聘Python工程师标准>>> Android的UI界面都是由View和ViewGroup及其派生类组合而成的. 其中,View是所有UI组件的基类,而 Vi ...

  4. 精通android布局,Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    标题图 UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个 ...

  5. Android(四)——View和ViewGroup

    文章目录 1. 用户界面概述 2. View类常用属性 3. ViewGroup类 4. UI组件的层次结构 1. 用户界面概述 在Android APP中,所有的用户界面元素都是由View和View ...

  6. View和ViewGroup的层次关系

    Layout也是一种View Widget - View Layout - ViewGroup

  7. android应用的界面编程----View与ViewGroup的概念

    1 UI OverView Android中所有的UI元素都是通过View与ViewGroup来构建的,View是指屏幕中一块可与用户进行交互的空白,类似于java界面编程中的JPanel.为了界面布 ...

  8. Android 应用开发(35)---View与ViewGroup的概念

    View与ViewGroup的概念 告别了第一章,迎来第二章--Android中的UI(User Interface)组件的详解, 而本节我们要学习的是所有控件的父类View和ViewGroup类!突 ...

  9. View与ViewGroup

    文章目录 1. `View`和`ViewGroup`的关系 2. 坐标获取 3. View的滑动 3.1 案例`layout()` 3.2 案例`offsetLeftAndRight & of ...

  10. 【Android】Android自定义View和ViewGroup知识点汇总

    一.View的绘制流程 onMeasure()->onDraw(). 二.ViewGroup的绘制流程 onMeasure()->onLayout()->onDraw()(一般不重写 ...

最新文章

  1. 【Docker】Docker的三大核心组件
  2. python-configparser生成ini配置文件
  3. 博主的办公室和他的工作台
  4. centos7装完chrome无法使用yum问题解决
  5. 矢量图标库如何引入html,Iconfont矢量图标库在网站中的使用方法
  6. jdk1.8配置(自我速成)
  7. c语言for循环的省略写法,C语言两种for循环写法分析
  8. java suppresslint_Java 注解用法详解——@SuppressWarnings
  9. 中两个查询结果相减_位移差?应力差?利用fish语言实现结果文件间运算。
  10. Hadoop 信息集成平台,让大数据分析更简单!
  11. 放心!没人在意你使用的是命令式编程还是声明式编程
  12. 在android的jni线程C传回调函数给java
  13. 启动vsftpd失败是什么原因_消防排烟风机不启动的原因是什么呢?
  14. python可视化界面开发实例-Python可视化界面编程入门
  15. 【IoT】 产品研发:位深为1的BMP格式图片详解
  16. 数学建模十大算法01-蒙特卡洛算法(Monte Carlo)
  17. git commit 提交信息写错,怎么更改?
  18. 君莫笑系列视频学习(2)
  19. 如何设计签名 我的名字
  20. 知识图谱-第三方工具:LibKGE(用于Knowledge Graph Embedding)【包含多种模型:TransE、DistMult、ComplEx、ConvE、Transformer等】

热门文章

  1. 《企业财务报表分析》学习笔记
  2. 网易云音乐评论抓取(js逆向)
  3. 斗鱼封禁主播陈一发,新媒体有出路吗?
  4. 前端基础学习之Sass
  5. Arduino开发板利用L298N电机驱动模块驱动直流电机
  6. C程序10 自由落体
  7. 【BZOJ3654】图样图森破【最长路】【后缀数组】【ST表】【回文串】【LCP】
  8. 重新安装OFFICE2010失败
  9. php扩展exif模块,Centos+PHP模块+exif扩展 (第三方模块)
  10. 搜索引擎优化方式及优化策略