- 定义布局的手段有几种?
答:有两种,一是在定义布局文件,而是在程序运行时动态创建View和ViewGroup对象,并将之应用为布局。
- android:text属性什么作用?目前我们知道哪些控件中有该属性?
答:该属性通常为控件上的文字显示信息,目前在TextView、EditView及Button中均有该属性
- 布局文件在哪个目录下存放?
答:在res/layout下面存放
- 如何将布局文件设置为某个activity的布局?
答:调用该activity的setContentView()方法,布局文件的R引用作为参数
- 我们自定义的控件的id在哪个文件中?引用系统资源同引用自定义资源的id有什么区别?
答:在R.java中;引用自定义资源的id,形式为android:id="@+id/my_button",引用系统资源id的形式为android:id="@android:id/empty"。
- 如何用id来引用布局中的对象?为什么通过findViewById这个方法得到的对象要进行类型强转?
答:在布局文件定义某个控件的id,在程序中创建一个view对象,并通过ID引用布局中的对象,如:Button myButton = (Button) findViewById(R.id.my_button);
因为findViewById方法的返回值为Object类型,所以需要进行类型的强转
- wrap_content、match_parent这两个值什么含义?
答:wrap_content指控件的大小适应其内的内容的大小,match_parent同父控件的大小一致。
- view的坐标系是怎样的?
答:每个view的形状为一个矩形,left和top表示它的位置,width和height表示它的大小;通过getLeft()和getTop()方法获取view的坐标(该坐标是相对于父控件的坐标,如下图), getWidth()和getHeight()获取宽度和高度,getRight()和getBottom()获取右下角坐标,单位均为像素。
- LinerLayout中的子元素是如何排列的?方向是怎么确定的?一行排不下,会不会折行?实验测试一下
答:是线性排列的,排列的方向由android:orientation的值确定,一行排不下,不会折行。
- 如何设置子控件的宽度或者高度相同?原理是什么?
答:可以将android:layout_height或者android:layout_width设置为”0dp”,然后android:layout_weight设置为”1”。原理就是权重的分配
- 盒子模型是什么?
答:
- android:gravity同android:layout_gravity什么区别?
答:android:gravity是本控件中的内容在本控件中的对齐模式,而android:layout_gravity是指本控件在父控件中的对齐方式。
- RelativeLayout是什么?它中的子控件怎么确定位置?注意这些子控件的属性可取什么值?什么是基线?
答:RelativeLayout以相对位置显示各子view的位置,每个view的位置通过相对它的兄弟view或者它的父view来进行定位。它通过指定一系列的位置属性来确定子控件的相对位置。baseline基线解释:书写英语单词时为了规范书写会设有四条线,从上至下第三条就是基线。基线对齐主要是为了两个控件中显示的英文单词的基线对齐。
- TableLayout的父类是哪个?说明什么问题?
答:它是LinearLayout的子类,这说明它实际也是线性布局
- TableLayout中有多少行是由什么确定的?列是由什么确定的?
答:该布局中的行由TableRow标签表示,有多少TableRow就有多少行,表列的个数由包含最多子元素的TableRow所决定。
- TableRow的宽度和高度分别是什么?它中的子控件呢?
答:TableRow不需要设置宽度和高度,它的宽度一定是match_parent,它的高度一定是wrap_content,它其中的控件的宽度和高度均为wrap_content。
- TableRow中的子控件在哪列怎么确定?如何跨列?
答:TableRow中的控件在哪一列由android:layout_column指定,该值从0开始,也可以一个元素跨多列,由android:layout_span指定跨列的个数。
- GridLayout是什么布局?
答:它是网格布局,是用一组没有宽度的线划分的纵横交错的格子。
- GridLayout中的orientation, rowCount 及 columnCount属性是什么含义?
答:orientation属性表示其中的控件是按行为主序,还是列为主序排列,rowCount为行的总数,columnCount为列的总数。
- 如何确定GridLayout中子控件所在的网格?如何将子控件扩展到其他网格?
答:通过android:layout_column及android:layout_row来确定它在网格中的位置,由android:layout_columnSpan和android:layout_rowSpan来确定该子控件占据多少列或多少行。
- 什么是帧布局?
答:帧布局为每个加入其中的控件创建一个区域(称为一帧,每个控件占据一帧)。帧与帧之间可以相互重叠。
- 帧布局中的子控件按什么顺序显示?
答:按他们定义的顺序,先定义的在下面,后定义的在上面
- 绝对布局中的子控件怎么确定位置?它的坐标系是什么?
答:绝对布局需要通过指定x、y坐标来控制每个控件的位置,放入该布局的控件需要通过android:layout_x及android:layout_y来指定准确的坐标,该坐标的单位为最好指定为dp。