ViewGroup和LayoutParams之间的关系
2015-11-14 10:59
706 查看
当在LinearLayout中写childView的时候,可以写layout_gravity,layout_weight属性;在RelativeLayout中的childView有layout_centerInParent属性,却没有layout_gravity,layout_weight,这是为什么呢?这是因为每个ViewGroup需要指定一个LayoutParams,用于确定支持childView支持哪些属性,比如LinearLayout指定LinearLayout.LayoutParams等。如果大家去看LinearLayout的源码,会发现其内部定义了LinearLayout.LayoutParams,在此类中,你可以发现weight和gravity的身影。
比如现在我们想重写一个viewgroup,然后只希望其中的子view支持margin属性那么我们可以重写generateLayoutParams
@Override
public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs)
{
return new MarginLayoutParams(getContext(), attrs);
}
而ViewGroup.MarginLayoutParams的定义关键部分如下,它记录了子控件的layout_margin值:
public static class MarginLayoutParams extends ViewGroup.LayoutParams {
public int leftMargin;
public int topMargin;
public int rightMargin;
public int bottomMargin;
}
参考:http://blog.csdn.net/lmj623565791/article/details/38339817
比如现在我们想重写一个viewgroup,然后只希望其中的子view支持margin属性那么我们可以重写generateLayoutParams
@Override
public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs)
{
return new MarginLayoutParams(getContext(), attrs);
}
而ViewGroup.MarginLayoutParams的定义关键部分如下,它记录了子控件的layout_margin值:
public static class MarginLayoutParams extends ViewGroup.LayoutParams {
public int leftMargin;
public int topMargin;
public int rightMargin;
public int bottomMargin;
}
参考:http://blog.csdn.net/lmj623565791/article/details/38339817
相关文章推荐
- 从硬盘创建分区--partprobe告诉内核--mkfs.ext3格式化--mount 挂载--使用
- php实现的递归提成方案实例
- PHP位运算符
- 《PHP从入门到精通》学习笔记二
- PHP输入流php://input与$_POST、$_GET
- PHP使用Pthread实现的多线程操作实例
- PHP程序中各函数的使用
- 9.php 数组知识,date,文件upload
- Yii2 菜单menu管理
- php中类的属性的声明和赋值
- Yii2 菜单menu管理
- 配置phpmyadmin可以远程连接mysql
- php连接mysql配置
- PHP使用Pthread实现的多线程操作实例
- php实现的递归提成方案实例
- PHP实现的一致性哈希算法完整实例
- PHP使用PHPexcel导入导出数据的方法
- php经典算法集锦
- 基于JS实现PHP的sprintf函数实例
- 10个实用的PHP正则表达式