最佳实践,文字的尺寸一律用sp单位,非文字的尺寸一律使用dp单位。例如textSize="16sp"、
layout_width="60dp";偶尔需要使用px单位,例如需要在屏幕上画一条细的分隔线时:
在这里介绍三种布局方式:
<!--
android:id —— 为控件指定相应的ID
android:text —— 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串
android:grivity —— 指定控件的基本位置,比如说居中,居右等位置
android:textSize —— 指定控件当中字体的大小
android:background —— 指定该控件所使用的背景色,RGB命名法
android:width —— 指定控件 的宽度
android:height —— 指定控件的高度
android:padding —— 指定控件的内边距,也就是说控件当中的内容(两控件包含关系)
android:sigleLine —— 如果设置为真的话,则将控件的内容在同一行当中进行显示
android:layout_marginLeft 两个相邻控件的外边距,此处是与左边控件的距离(两控件平等关系)
-->
1. 线性布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
当 android:orientation="vertical" 时,只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。
当 android:orientation="horizontal" 时,只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。
2. 表格布局
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="0"> // 表示自动拉伸的那一列
子标签是 <TableRow>,表示每一行
3.相对布局
RelativeLayout
用到的一些重要的属性:
第一类:属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
动态布局:LayoutInflater和LayoutParams
区别:LayoutInflater是把XML布局文件转变成一个VIEW, 而LayoutParams是吧一个VIEW或者一个Layout(这个view或者layout就可以用inflater得来)添加到父布局中的参数设置
两者的用法:
- //创建一个线性布局
- private LinearLayout mLayout;
- mLayout = (LinearLayout) findViewById(R.id.layout);
- //现在我要往mLayout里边添加一个TextView
- //你可能会想直接在布局文件里边配置不就O 了 那是 但是这里为了说明问题我们用代码实现
- TextView textView = new TextView(Activity01.this);
- textView.setText("Text View " );
- //这里请不要困惑这里是设置 这个textView的布局 FILL_PARENT WRAP_CONTENT 和在xml文件里边设置是一样的如
- //在xml里边怎么配置高宽大家都会的。
- //第一个参数为宽的设置,第二个参数为高的设置。
- LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.FILL_PARENT,
- LinearLayout.LayoutParams.WRAP_CONTENT
- );
- //调用addView()方法增加一个TextView到线性布局中
- mLayout.addView(textView, p);