菜鸟学android(1)线性布局与相对布局
来源:互联网 发布:伊斯兰教邪教知乎 编辑:程序博客网 时间:2024/06/06 03:31
本篇介绍android的线性布局(LinearLayout)和相对布局(RelativeLayout),
- < LinearLayout> < /LinearLayout>
- < RelativeLayout> < /RelativeLayoutLayout>
1.<LinearLayout>
线性布局
特点:控件紧密依次排列 呈线性水平或者垂直分布 简单易懂属性少 在下用的最多的界面布局 weight属性做出来的自适应布局百试不爽~
xml属性:
android:orientation="vertical"垂直分布android:orientation="horizontal"水平分布android:gravity="xxx" 表示子控件在布局中放在什么位置中间可加 | 同时选择两种属性 如android:gravity="center_horizontal|top" 表示在顶部居中设置方法 : setGravity(int); android:weightSum="xxx" 内部填数值表示比重和是多少(可以不写)与之相对的属性是:android:layout_weight="xxx"内部数字表示自身占父控件多少比重 如:父控件 weightSum ="1",自身layout_weight = "0.5",则占一半。android:baselineAligned="xxx" 设置布局控件中子控件内的文字的基线是否对齐。默认是true如当:orientation设置为horizontal时 几个控件上的文字下边缘是对齐的设置方法:setBaselineAligned(boolean b); android:baselineAlignedChildIndex="xxx"设置文字基线对齐的子控件 填入数字表示是该布局下的第几个子控件 记得是从0开始!!!android:divider="xxx" 用于在子控件之间添加分割线 填入的东西一般为引用。如@drawable设置方法 : setDividerDrawable(Drawable); android:showDividers="xxx"显示分割线android:measureWithLargestChild = "xxx"默认是false 设置为true时,该布局中所有带权重属性的控件的高与高度最高的控件相同(垂直时),宽与宽度最宽的控件相同(水平时) 注意在线性布局中 宽高要设置成wrap_content设置方法 : setMeasureWithLargestChildEnable(boolean b);
代码中常见的方法:
1.--------------------------------------------------获取LinearLayout宽高:View.getHeight(),View.getWidth() 注意:在组件外是无法获取宽高的组件外无法获取 : 调用View.getHeight() 和View.getWidth()方法是获取不到组件的宽度和高度的,因为在onCreate()时LinearLayout还没有绘制完成,所以这两个方法返回的是0, Android的运行机制决定了无法在组件外部使用getHeight()和getWidth()方法获取宽度和高度;组件内可以获取 : 在自定义的类中可以在View的类中通过调用这两个方法获取该View子类组件的宽和高;此外也可以使用View view = getLayoutInflater().inflate(R.layout.main, null); LinearLayout linearlayout = (LinearLayout)view.findViewById(R.id.linearlayout); //measure方法的参数值都设为0即可 linearlayout.measure(0,0); //必须先调用view.measure()//获取组件宽度 int width = linearlayout.getMeasuredWidth(); //获取组件高度 int height = linearlayout.getMeasuredHeight(); 2.------------------------------------------------获取组件的宽高1. 使用view.measure()与上述方法一样int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);//宽int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);//高//关于MeasureSpec的内容看下方链接-1-view.measure(w,h);view.getMeasuredWidth();//获取宽view.getMeasuredHeight();//获取高2. ViewTreeObserver viewTreeObserver;声明一个对象 然后可以注册下面两个回调函数(任选一个)//关于ViewTreeObserver 的内容看下方链接-2-(1)viewTreeObserver .addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override//当一个视图树将要绘制时调用这个回调函数 public boolean onPreDraw() { printLog("使用ViewTreeObserver 获取宽高:width:" + textview1.getMeasuredWidth() + "---->height:" + textview1.getMeasuredHeight()); + return true; } }); (2)vtb1.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override//当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时调用这个回调函数。 public void onGlobalLayout() { textview1.getViewTreeObserver().addOnGlobalLayoutListener(this); printLog("使用OnGlobalLayoutListener 获取宽高:width:" + textview1.getWidth() + "---->height:" + textview1.getHeight()); } });3.--------------------------------------------------------------设置控件的宽高1、获取控件所在的布局LayoutParams param = button.getLayoutParams();//获取按钮的布局2、修改布局中的height,width属性param.width=200;//修改宽度param.height=300;//修改高度3、重新设置修改后的布局给控件button.setLayoutParams(param); //设置修改后的布局。//对于LayoutParams的内容介绍见链接-3-
链接:
-1-对于MeasureSpec的内容介绍
-2-对于ViewTreeObserver 的内容介绍
-3-对于LayoutParams的内容介绍
2. <RelativeLayout>
相对布局
特点:通过对子控件的属性控制来决定子控件位于父控件的位置 我用的第二多的布局格式
xml 常用属性:
第一类:属性值为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 离某元素上边缘的距离
在代码中的常用的方法:
与LinearLayout大同小异,这里就不继续赘述了。
0 0
- 菜鸟学android(1)线性布局与相对布局
- android 中的线性布局与相对布局
- Android 布局(一):相对布局和线性布局
- Android学习.1(线性布局和相对布局)
- Android 线性布局和相对布局
- Android相对布局和线性布局
- Android相对布局和线性布局
- Android常用布局(FrameLayout(框架布局)、LinearLayout(线性布局)、RelativeLayout(相对布局))详解
- Android布局(相对布局)
- Android布局——线性布局、相对布局
- Android两大布局:线性布局(LinearLayout) 相对布局(RelativeLayout)
- Android 五大布局之线性布局和相对布局
- 菜鸟学android(2)帧布局,绝对布局,表格布局,网格布局
- Android -- UI布局管理,相对布局,线性布局,表格布局,绝对布局,帧布局
- android开发4:布局管理器1(线性布局,相对布局RelativeLayout-案例)
- Android 五大布局之(一) 线性布局和相对布局
- Android布局(1)--线性布局(LinerLayout)
- 线性布局 相对布局 参数
- LeetCode 9 : Palindrome Number
- 雅虎宣布其史上最严重数据泄露:5亿账户于2014年被盗
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
- 你是哪个级别?(工程师级别划分)
- [MySQL] 修改表结构
- 菜鸟学android(1)线性布局与相对布局
- 使用mybatis genetator 根据数据库生成映射文件
- 多线程编程入门(一)
- cocos2d-x中使用box2d出现无法解析的外部符。。
- Web项目中的classpath路径说明
- Hadoop 系统架构分析(2)
- 超级有用的前端基础技术面试问题收集
- c++ 宏
- UiAutomator UiScrollabel