[android](学习笔记2)深入xml布局属性

1 布局参数

部分属性名以“layout_”开头,如android:layout_marginLeft,而其他属性名称则不是。

名称不以“layout_”开头的属性作用于组件。组件生成时,会调用某个方法按照属性及属性值进行自我配置;

名称以“layout_”开头的属性则作用于组件的父组件。并称这些属性为布局参数。它们负责告知父组件如何在内部安排自己的子组件。也就是说,只要包含布局参数,就说明它有自己的父组件。

2 内边距和外边距

内边距:android:padding

外边距:android:layout_marginXXX

如第一点中描述的,外边距是要告诉父组件,在布局子组件的时候,某个边缘间距多少。内边距的含义是,在绘制自身时,要比所含内容大多少。

3 为默认生成的布局添加对应的水平模式

当屏幕旋转的时候,默认生成的布局会发生相应的旋转,但是机械地对部分组件进行拉伸和重新调整自己和自己的子组件。如何根据自己的需要有效地对水平模式的布局进行调整?要实现这一点,可以尝试如下步骤:

  1. 需创建res/layout-land目录,将res/layout目录下的布局文件复制至res/layout-land目录;
  2. 通过变更res/layout-land目录下的布局文件,达到自主修改水平布局的目的。

4 android:layout_weight属性的工作原理

该属性告知LinearLayout(父组件)如何进行子组件的布置排布。在决定子组件视图的显示宽度时,LinearLayout使用的是layout_weight和layout_width的混合值。主要分以下两步完成:

  1. LinearLayout查看layout_width属性值(垂直方向查看layout_height属性值)。假设当前有一个水平的LinearLayout,其中包含了两个子组件:Button和CheckBox,并且它们显示的文字信息长度不同,并且它们在各自wrap_content的情况下,不能填充整个LinearLayout,依次排布之后还有额外的空间(extra space)。
  2. LinearLayout检查layout_weight属性值。依据layout_weight属性值,LinearLayout把额外的空间,按照比例分配给每一个子组件。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。