2 . FrameLayout的主要用途。 答: FrameLayout主要用于进行层次结构的布局。例如:想把两个图像叠加到一起形成一张图像的效果就可以用 FrameLayout。
3. 现在有三个按钮,如何让这3个按钮以水平方向分别左对齐,居中对齐和右对齐。 分析: FrameLayout是最容易实现的,每一个view的XML标签都有一个android:layout_gravity属性,通过设置该属性,可以在 FrameLayout中实现任何方向的对齐布局。这一点与LinearLayout不同,在LinearLayout中的view并不是对每一个android:layout_gravity的属性起作用。所以最容易实现的是FrameLayout。
4.FrameLayout中的view都是层叠摆放的,后一个view会覆盖前一个view这种说法对吗?说明原因。 不正确。FrameLayout中的view只有在所有的view同样大小时,并且在同一个位置时才会被覆盖。否则,view是以层叠方式显示的。
5. 如何获取LinearLayout的宽度和高度??? *调用view.measure方法测量组件的宽度和高度,然后用view.getMeasuredWidth和view.getMeasuredheight方法获取宽高。 *直接获取布局文件中的宽高用View。getLayoutParams().width和getLayoutParams().height方法。
6.如何将当前界面的可视组件以同样的相对位置大小保存在PNG图像文件中??(将布局存成图像),写出实际代码:
<span style="color:#000000;">View view = getLayoutInflater().inflate(R.layout.hehe, null);
// 打开图像缓存
view.setDrawingCacheEnabled(true);
// 必须要调用measure和Layout方法才能成功保存可视组件的截图到PNG图像文件
// 测量view的大小
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
// 发送位置和尺寸到view及其所有的子view
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
try {
// 获取可视组件的截图
Bitmap bitmap = view.getDrawingCache();
// 将截图保存在SD卡根目录的text.png图像文件中
FileOutputStream fos = new FileOutputStream("/sdcard/text.png");
// 将Bitmap对象中的图像数据压缩成png格式的图像数据,并将这些数据保存在text.png文件中
bitmap.compress(CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
// TODO: handle exception
}
}</span>
7.如何重用布局文件? 可以使用<include>标签引用其他布局文件,并用android:id来覆盖引用布局文件中顶层节点的android:id属性值。代码如下:
<span style="color:#000000;"><!-- 引用布局hehe文件 -->
<include android:id="@+id/layout1" layout="@layout/hehe"></include></span>
8.android:padding 属性和android:layout_margin属性的区别 : android:padding属性用于设置view中的内容距view边缘的距离,而android:layout_margin用于设置view距离其他view或父容器边缘的距离。
(待续)