[原]ViewGroup(容器组件)详解(API解析)

一. ViewGroup简介


1.View和ViewGroup关系


UI组件在Android中的位置 : Android中的UI组件大部分都放在android.widget 或者 android.view包中;  View组件 和 ViewGroup组件都在android.view包中;


View 和 ViewGroup关系

继承关系 : ViewGroup是View的子类, 因此ViewGroup有View的一切属性, 可以当做View来使用, ViewGroup主要是当做容器使用; View是小控件widget和容器组件ViewGroup的父类, ViewGroup是布局如LinearLayout的基类;

包含关系 : ViewGroup中可以包含View和ViewGroup, ViewGroup可以无限嵌套;


View和ViewGroup关系图解



抽象类 : ViewGroup是一个抽象类, 作为容器的类通常是ViewGroup的子类; ViewGroup子类对象有 : LinearLayout, FrameLayout等布局;


2. ViewGroup中的内部类


两个内部类

ViewGroup通过Viewgroup.LayoutParams和ViewGroup.MarginLayoutParams来控制容器中的组件;

ViewGroup.LayoutParams支持的XML属性

android:layout_height属性(指定布局高度) 和 android:layout_width属性(指定布局宽度), 这两个属性的值可以为 fill_parent, match_parent, wrap_content, 其中充满布局空间推荐使用match_parent;


组件的宽高 与 布局的宽高 : Android的组件的高度和宽度不是其实际的宽度和高度, 组件实际的高度和宽度同样受布局的宽高影响, 例如设置组件的宽度为100px, 如果设置布局宽度(layout_width)为match_parent, 那么组件的实际宽度就会被拉宽到整个布局, 如果设置布局的宽度为wrap_content, 那么组件的实际宽度就是100px;


ViewGroup.MarginLayoutParams支持的XML属性

android:layout_marginBottom : 指定该子组件到父容器下边界的距离, 同理android:layout_marginTop, android:layout_marginLeft, android:layout_marginRight, 


3. View介绍


View可以有两种方式创建 : 一种是靠XML文件创建, 一种是靠代码创建;


这里只是简单的介绍下, View详细的属性会单独有一篇博客进行总结;


View创建关注的方面

(1)设置属性

长宽等属性可以在XML中设置, 也可以在代码中设置; 


(2)请求焦点

可以通过函数实现焦点转变, 可以根据不同的焦点设置背景; 

焦点类别 : 可获取的焦点, 不可获取的焦点, 可以获取但是正在触摸状态下的焦点;


(3)设置事件监听

View在本身发生变化的时候, 会将信息广播出去, 这边变化例如 : 点击, 焦点改变等;

一个事件的广播到来, 该事件就会传递到相应的View中对应的监听器里, 相当于回调View中的监听器方法;


(4)设置显示与隐藏

View可以在XML或者代码中设置是否显示或者隐藏. 同样也可以设置滚动条等设置;


二. 自定义ViewGroup


1. ViewGroup中相关方法介绍


(1)测量回调方法

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

,





,





,

转载于:https://www.cnblogs.com/java20131201/p/3472365.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值