Android五大布局的使用及其它
来源:互联网 发布:哈佛 extension 知乎 编辑:程序博客网 时间:2024/06/09 17:20
几大布局的使用:
android.widget.AbsoluteLayout 绝对布局
android.widget.RelativeLayout 相对布局
android.widget.LinearLayout 线性布局
android.widget.TableLayout 表格布局
android.widget.FrameLayout 层布局
android.widget.GridLayout网格布局
android.widget.ScrollView滚动视图
使用频率:
1.LinearLayout
2.FrameLayout
3.RelativeLayout
4.TableLayout
5.AbsoluteLayout
main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/LinearLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="LinearLayout" android:textSize="25dp" /> <Button android:id="@+id/TableLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TableLayout" android:textSize="25dp" /> <Button android:id="@+id/RelativeLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="RelativeLayout" android:textSize="25dp" /> <Button android:id="@+id/AbsoluteLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="AbsoluteLayout" android:textSize="25dp" /> <Button android:id="@+id/FrameLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="FrameLayout" android:textSize="25dp" /> <Button android:id="@+id/GridLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="GridLayout" android:textSize="25dp" /> <Button android:id="@+id/ScrollView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="ScrollView" android:textSize="25dp" /></LinearLayout>
LinearLayout
是线性布局,通过orientation设置:垂直(vertical),水平(horizontal),android:layout_weight="1" 设置比重
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="20dp" android:layout_marginRight="20dp"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入注册用户名" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请再次输入密码" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入您的邮箱" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入您的手机" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="注册" /></LinearLayout>
TableLayout布局
TableLayout其实就是在LinearLayout基础上进一步扩展,用LinearLayout合成一个横向+纵向的特有布局。
特有参数
android:collapseColumns="0,1"折叠
android:shrinkColumns="0,1" 收缩
android:stretchColumns="0,1" 拉伸
android:layout_span="3" 表示两个单元格合并
TableRow表格布局,应用场景信息的列表显示,已经淘汰,当你的数据是动态显示的时候,完全没有,现在的数据有不是动态显示的吗TableRow代表表格中的四行,每行可以设置显示水平或者垂直
表格布局
表格布局是一个ViewGroup以表格显示它的子视图(view)元素,即行和列标识一个视图的位置。
表格布局常用的属性如下:
android:collapseColumns:隐藏指定的列
android:shrinkColumns:收缩指定的列以适合屏幕,不会挤出屏幕
android:stretchColumns:尽量把指定的列填充空白部分
android:layout_column:控件放在指定的列
android:layout_span:该控件所跨越的列数
// 相对于给定ID控件<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"><TableRow android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="20dp" android:layout_weight="1" android:text="学生姓名"/> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="20dp" android:layout_weight="1" android:text="数学成绩"/> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="20dp" android:layout_weight="1" android:text="语文成绩"/></TableRow> <TableRow android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="20dp" android:layout_weight="1" android:text="张三"/> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="20dp" android:layout_weight="1" android:text="90"/> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="20dp" android:layout_weight="1" android:text="96"/> </TableRow> <TableRow android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="20dp" android:layout_weight="1" android:text="李四"/> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="20dp" android:layout_weight="1" android:text="85"/> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:textSize="20dp" android:layout_weight="1" android:text="99"/> </TableRow></TableLayout><span style="font-size: 18pt;"></span>RelativeLayout相对布局 牵一发而动全身的布局
android:layout_above 将该控件的底部置于给定ID的控件之上;
android:layout_below 将该控件的底部置于给定ID的控件之下;
android:layout_toLeftOf 将该控件的右边缘与给定ID的控件左边缘对齐;
android:layout_toRightOf 将该控件的左边缘与给定ID的控件右边缘对齐;
android:layout_alignBaseline 将该控件的baseline与给定ID的baseline对齐;
android:layout_alignTop 将该控件的顶部边缘与给定ID的顶部边缘对齐;
android:layout_alignBottom 将该控件的底部边缘与给定ID的底部边缘对齐;
android:layout_alignLeft 将该控件的左边缘与给定ID的左边缘对齐;
android:layout_alignRight 将该控件的右边缘与给定ID的右边缘对齐;
// 相对于父组件
android:layout_alignParentTop 如果为true,将该控件的顶部与其父控件的顶部对齐;
android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;
android:layout_alignParentLeft 如果为true,将该控件的左部与其父控件的左部对齐;
android:layout_alignParentRight 如果为true,将该控件的右部与其父控件的右部对齐;
// 居中
android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;
android:layout_centerVertical 如果为true,将该控件的置于垂直居中;
android:layout_centerInParent 如果为true,将该控件的置于父控件的中央;
// 指定移动像素
//相对于父控件
android:layout_marginTop 上偏移的值;
android:layout_marginBottom 下偏移的值;
android:layout_marginLeft 左偏移的值;
android:layout_marginRight 右偏移的值;
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"><EditText android:id="@+id/etUserName" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入用户名"/> <EditText android:id="@+id/etPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/etUserName" android:hint="请输入用密码"/> <Button android:id="@+id/btnExit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/etPassword" android:layout_alignParentRight="true" android:layout_marginRight="22dp" android:text="退出"/> <Button android:id="@+id/btnLogin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/etPassword" android:layout_toLeftOf="@id/btnExit" android:text="登录"/></RelativeLayout>
AbsoluteLayout绝对布局使用较少,基本淘汰
// 绝对布局通过指定子组件的确切X,Y坐标来确定组件的位置,
// 在Android2.0 API文档中标明该类已经过期,可以使用FrameLayout或者RelativeLayout来代替。
// 所以这里不再详细介绍。
<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="46dp" android:layout_y="14dp" android:text="软件开发模型图" android:textSize="30dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="223dp" android:layout_y="120dp" android:text="运行" android:textSize="30dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="190dp" android:layout_y="165dp" android:text="测试" android:textSize="30dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="164dp" android:layout_y="205dp" android:text="编码" android:textSize="30dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="112dp" android:layout_y="242dp" android:text="设计" android:textSize="30dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="69dp" android:layout_y="287dp" android:text="需求" android:textSize="30dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="46dp" android:layout_y="14dp" android:text="软件开发模型图" android:textSize="30dp" /></AbsoluteLayout>
FrameLayout→多在游戏中使用,控件叠加
FrameLayout是最厚的布局。
FrameLayout中添加的View都只能从左上角开始,然后一个一个叠加起来。说白了就是用来叠加其他布局用的。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/textview1" android:layout_width="300dp" android:layout_height="300dp" android:layout_gravity="center" android:background="#FF33ffff"/> <TextView android:id="@+id/textview2" android:layout_width="240dp" android:layout_height="240dp" android:layout_gravity="center" android:background="#FF33ccff"/> <TextView android:id="@+id/textview3" android:layout_width="180dp" android:layout_height="180dp" android:layout_gravity="center" android:background="#FF3399ff"/> <TextView android:id="@+id/textview4" android:layout_width="120dp" android:layout_height="120dp" android:layout_gravity="center" android:background="#FF3366ff"/> <TextView android:id="@+id/textview5" android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="center" android:background="#FF3300ff"/></FrameLayout>
GridLayout网格布局:
可以将屏幕的大小分成大小不同的一个一个格子,然后把控件一个一个的放进去,要想使用GridLayout,工程的android:minSdkVersion和android:targetSdkVersion
都必须大于等于APILevel14
<?xml version="1.0" encoding="utf-8"?><GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:columnCount="4"><TextView android:layout_width="150dp" android:layout_height="60dp" android:layout_columnSpan="2" android:layout_gravity="left" android:background="#ff08b0ff" android:gravity="center" android:text="男装" android:width="50dp" /> <TextView android:layout_width="150dp" android:layout_height="60dp" android:layout_columnSpan="2" android:background="#ff11ffc5" android:gravity="center" android:text="女装" android:width="50dp" /> <TextView android:layout_width="75dp" android:layout_height="60dp" android:layout_gravity="top" android:background="#ffff60a9" android:gravity="center" android:text="童装" android:width="25dp" /> <TextView android:layout_width="150dp" android:layout_height="60dp" android:layout_columnSpan="2" android:background="#ffeeff52" android:gravity="center" android:text="流行装" android:width="50dp" /> <TextView android:layout_width="75dp" android:layout_height="60dp" android:background="#ffc570ff" android:gravity="center" android:text="男装" android:width="25dp" /></GridLayout>
ScrollView滚动视图
注意 使用限制:
ScrollView中只能有一个View,本例张只包含一个TextView控件没有问题,
如果亚欧页面中包含多个控件的话,就会出问题的,解决方法:
ScrollView布局中嵌套LinearLayout布局,把需要放置的多个控件放到LinearLayout中,如home_page.xml
<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"><TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/tv_content" android:textSize="20dp" /></ScrollView>
三字经定义在res/values/strings.xml中
java代码:
package com.ncsyeyy.YeyyLayout;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.RadioButton;public class MyActivity extends Activity { private Button btnLL; private Button btnTL; private Button btnRL; private Button btnAL; private Button btnFL; private Button btnGL; private Button btnSV; /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findView(); setListener(); } private void setListener() { btnLL.setOnClickListener(listener); btnTL.setOnClickListener(listener); btnRL.setOnClickListener(listener); btnAL.setOnClickListener(listener); btnFL.setOnClickListener(listener); btnGL.setOnClickListener(listener); btnSV.setOnClickListener(listener); } View.OnClickListener listener=new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.LinearLayout: setTitle("线性布局"); setContentView(R.layout.linearlayout); break; case R.id.TableLayout: setTitle("表格布局"); setContentView(R.layout.tablelayout); break; case R.id.RelativeLayout: setTitle("相对布局"); setContentView(R.layout.relativelayout); break; case R.id.AbsoluteLayout: setTitle("绝对布局"); setContentView(R.layout.absolutelayout); break; case R.id.FrameLayout: setTitle("帧布局"); setContentView(R.layout.framelayout); break; case R.id.GridLayout: setTitle("网格布局"); setContentView(R.layout.gridlayout); break; case R.id.ScrollView: setTitle("滚动视图"); setContentView(R.layout.scrollview); break; } } }; private void findView() { btnLL = (Button) findViewById(R.id.LinearLayout);//线性布局 btnTL = (Button) findViewById(R.id.TableLayout);//表格布局 btnRL = (Button) findViewById(R.id.RelativeLayout);//相对布局 btnAL = (Button) findViewById(R.id.AbsoluteLayout);//绝对布局 btnFL = (Button) findViewById(R.id.FrameLayout);//帧布局 btnGL = (Button) findViewById(R.id.GridLayout);//网格布局 btnSV = (Button) findViewById(R.id.ScrollView);//滚动视图 }// listener = new View.OnClickListener() {// Intent intent;// @Override// public void onClick(View v) {// switch (v.getId()){// case R.id.LinearLayout://// setTitle("线性布局");//// setContentView(R.layout.linearlayout);// intent=new Intent();// intent.setClass(MyActivity.this,LinearLayoutActivity.class);// startActivity(intent);// break;// case R.id.TableLayout:// intent=new Intent();// intent.setClass(MyActivity.this, TableLayoutActivity.class);// startActivity(intent);// break;// case R.id.RelativeLayout:// intent=new Intent();// intent.setClass(MyActivity.this, RelativeLayoutActivity.class);// startActivity(intent);// break;// case R.id.AbsoluteLayout:// intent=new Intent();// intent.setClass(MyActivity.this, AbsoluteLayoutActivity.class);// startActivity(intent);// break;// case R.id.FrameLayout:// intent=new Intent();// intent.setClass(MyActivity.this, FramelaLayoutActivity.class);// startActivity(intent);// break;// case R.id.GridLayout:// intent=new Intent();// intent.setClass(MyActivity.this, GridLayoutActivity.class);// startActivity(intent);// break;// case R.id.ScrollView:// intent=new Intent();// intent.setClass(MyActivity.this, ScrollViewActivity.class);// startActivity(intent);// break;// }// }// };}
布局的综合应用:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_weight="4"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="3" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="-" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="0" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="." /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="+" /> </LinearLayout> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:text="/" /></LinearLayout>
源码地址:http://download.csdn.net/detail/csdnyuandaimaxuexi/9105545
- Android五大布局的使用及其它
- 8.18android工程的结构及其五大布局
- Android五大布局的使用
- Android的五大布局
- Android 的五大布局
- Android的五大布局
- Android的五大布局
- Android的五大布局
- Android开发五大布局及其属性整合
- Android:五大布局控件使用
- 【Android】Android的五大布局
- Android 五大布局
- android五大布局
- Android 五大布局
- Android 五大布局
- android 五大布局
- android 五大布局
- Android 五大布局
- Spark编程笔记
- 安卓 apk反编译教程
- Unity3D游戏开发之RPG游戏剧情呈现策略
- 关于左移和右移问题!
- ADO.NET 小结
- Android五大布局的使用及其它
- Android之HttpClient 和HttpResponse 小结
- asp.net中弹框提示的几种写法
- Xcode6下无法使用XAlign插件的解决方法
- 十进制转换为任意进制 java实现
- Win10 只有Edge无法上网的解决方法
- tcp/ip详解学习(一)
- nginx 服务器配置404 页面
- 条件变量与互斥锁