Android布局二_LinearLayout
来源:互联网 发布:计算访问消耗数据流量 编辑:程序博客网 时间:2024/05/17 07:48
LinearLayou(线性布局布局)
一些重要的属性:
一 orientation(朝向) 该属性值有两种一种是垂直朝向(verticle),还有一个是水平朝向(horizontal)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:background="@drawable/blue" android:layout_width="match_parent" android:layout_height="wrap_content"> <!-- view1 goes on top --> <TextView android:background="@drawable/box" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/linear_layout_1_top"/> <!-- view2 goes in the middle --> <TextView android:background="@drawable/box" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/linear_layout_1_middle"/> <!-- view3 goes on the bottom --> <TextView android:background="@drawable/box" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/linear_layout_1_bottom"/></LinearLayout>
结果如下:
二 layout_weight(权重):
看下面一个例子: 该布局填充整个屏幕,其中有三个字控件,分别占据头部,底部,中间
在上一篇博客中我们通过相对布局也可以实现(把高设置成0,height=0)
更多关于该属性的细节可以浏览http://hi.baidu.com/mendynew/item/39cd374192770bab60d7b915
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@drawable/blue" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- view1 goes on top --> <TextView android:background="@drawable/box" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/linear_layout_3_top"/> <!-- view2 goes in the middle --> <TextView android:background="@drawable/box" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/linear_layout_3_middle"/> <!-- view3 goes on the bottom --> <TextView android:background="@drawable/box" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/linear_layout_3_bottom"/></LinearLayout>运行结果:
下面一个例子,所有子空间的都是相同的宽度.也是通过该属性来实现的.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:background="@drawable/red" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1"/> <TextView android:background="@drawable/green" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1"/> <TextView android:background="@drawable/blue" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1"/> <TextView android:background="@drawable/yellow" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1"/></LinearLayout>
下面看一个简单表单的例子,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@drawable/blue" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dip"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/linear_layout_5_instructions"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:drawable/editbox_background"/> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/linear_layout_5_cancel"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:text="@string/linear_layout_5_ok" /> </LinearLayout></LinearLayout>
在上一篇博客中通过相对布局也能布局出这样的,但是从效率上说,相对布局要好很多,效率要高.从这个例子上看线性布局的层级要深.
weight属性还可以实现如下布局:
运行结果:
通过相对布局也是可以实现这样的布局,把button设置为android:layout_alignParentBottom ="true"
三 gravity(重心)
下面来看一个例子:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="30dip" > <LinearLayout android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/blue" android:orientation="vertical" android:padding="30dip" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/box" android:text="@string/linear_layout_8_c" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/box" android:text="@string/linear_layout_8_b" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/box" android:text="@string/linear_layout_8_c" /> </LinearLayout></FrameLayout>
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, VERTICAL_ID, 0, R.string.linear_layout_8_vertical); menu.add(0, HORIZONTAL_ID, 0, R.string.linear_layout_8_horizontal); menu.add(0, TOP_ID, 0, R.string.linear_layout_8_top); menu.add(0, MIDDLE_ID, 0, R.string.linear_layout_8_middle); menu.add(0, BOTTOM_ID, 0, R.string.linear_layout_8_bottom); menu.add(0, LEFT_ID, 0, R.string.linear_layout_8_left); menu.add(0, CENTER_ID, 0, R.string.linear_layout_8_center); menu.add(0, RIGHT_ID, 0, R.string.linear_layout_8_right); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case VERTICAL_ID: mLinearLayout.setOrientation(LinearLayout.VERTICAL); return true; case HORIZONTAL_ID: mLinearLayout.setOrientation(LinearLayout.HORIZONTAL); return true; case TOP_ID: mLinearLayout.setVerticalGravity(Gravity.TOP); return true; case MIDDLE_ID: mLinearLayout.setVerticalGravity(Gravity.CENTER_VERTICAL); return true; case BOTTOM_ID: mLinearLayout.setVerticalGravity(Gravity.BOTTOM); return true; case LEFT_ID: mLinearLayout.setHorizontalGravity(Gravity.LEFT); return true; case CENTER_ID: mLinearLayout.setHorizontalGravity(Gravity.CENTER_HORIZONTAL); return true; case RIGHT_ID: mLinearLayout.setHorizontalGravity(Gravity.RIGHT); return true; } return super.onOptionsItemSelected(item); }以上设置的gravity是通过Java代码设置的,也可以通过xml配置
需要注意的是layout_gravity和gravity的区别,前者是该控件相对于父控件的重心(gravity),后者该控件的子空间的重心(gravity)
欢迎转载,转载请注明出处: http://blog.csdn.net/johnny901114/article/details/7866864
- Android布局二_LinearLayout
- Android基础_页面布局_LinearLayout(线性布局)
- android学习笔记1_LinearLayout and weight
- Android布局(二)------ListView
- Android二布局
- android布局及常见布局属性 二
- android布局之二:布局复用
- Android深入浅出之二(布局)
- Android用户界面(二):布局
- Android常用界面布局(二)
- Android布局(二)RelativeLayout
- Android布局特效(二)
- 关于Android布局优化(二)
- Android的布局(二)
- android高仿微信布局(二)
- android-用户界面[线性布局] 二
- 二、Android的布局(相对布局和帧布局)
- Android界面布局二---------------RelativeLayout(相对布局)
- C# Random生成随机数字和字母
- 黑马程序员——对于递归的学习
- hdu1466
- Web服务器相关介绍(tomcat)
- 闭锁CountDownLatch与栅栏CyclicBarrier
- Android布局二_LinearLayout
- [前端优化]使用Combres合并对js、css文件的请求
- python challenge 游戏闯关 学习1
- Combres库 学习小结以及部分源码分析
- android meta-data 使用详解
- Eclipse快捷键大全
- 第04章 异常处理 05 异常的捕获和处理 finally语句
- c# 扩展方法奇思妙用基础篇四:Random 扩展
- 个人作品——类windows自带的计算器