Android笔记(七) Android中的布局——线性布局
我们的软件是由好多个界面组成的,而每个界面又由N多个控件组成,Android中借助布局来让各个空间有条不紊的摆放在界面上。
可以把布局看作是一个可以放置很多控件的容器,它可以按照一定的规律调整控件的位置,从而实现精美的界面。
布局中也可以放置布局,通过多层布局的嵌套,实现比较复杂的界面。
Android提供了四种基本布局:LinearLayout、RelativeLayout、FrameLayout、TableLayout
LinearLayout:
LinearLayout称为线性布局,正如其名字一样,这个布局中的所有控件在线性方向上依次排列。
LinearLayout通过orientation属性来指定排列方向是垂直还是水平,如果值为vertical,控件为垂直排列,如果值为horizantal,控件为水平排列
代码:
activity_main.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical" > <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BUTTON1"
android:id="@+id/button1"/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BUTTON2"
android:id="@+id/button2"/> <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BUTTON3"/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BUTTON4"/> </LinearLayout> </LinearLayout>
以上代码在模拟器中显示为

从上面的代码我们可以看出,线性布局中,android:orientation属性控制了内部控件的布局方向,vertical为垂直布局,horizontal为水平布局,Android系统默认线性布局为水平方向(horizaontal)。
线性布局中还有一个属性android:gravity来控制布局内子元素的重力方向,它有以下多个参数可供选择:
center、 bottom、center_horizontal、center_vertital、clip_horizontal、clip_vertital、 end、fill、 fill_horizontal、fill_vertital、 left、right、start、top。
LinearLayout还有另外一个重要的属性——android:layout_weight,这个属性可以让我们使用比例的方式来指定控件的大小,在手机屏幕适配型方面可以起到非常重要的作用。
代码示例:
activity_main.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="horizontal"
> <EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/usernameInput"
android:text="请输入你的用户名"
android:layout_weight="7"/> <Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/loginButton"
android:text="登录"
android:layout_weight="3"/>
</LinearLayout>
运行结果为:

EditText占屏幕的7/10 Button占屏幕的3/10.原理很简单,先将两个控件所占比例相加为屏幕总比例,然后用各自所占比例相除
Android笔记(七) Android中的布局——线性布局的更多相关文章
- Android 笔记之 Android 系统架构
Android笔记之Android系统架构 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: ...
- iOS流布局UICollectionView系列七——三维中的球型布局
摘要: 类似标签云的球状布局,也类似与魔方的3D布局 iOS流布局UICollectionView系列七——三维中的球型布局 一.引言 通过6篇的博客,从平面上最简单的规则摆放的布局,到不规则的瀑 ...
- Android Fragment之间的通信(用fragment替换掉XML布局文件中的一个线性布局)
1.XML布局 (1)主界面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xml ...
- Android布局— — —线性布局
以水平或垂直的方式显示界面中的控件 线性布局 语法格式: <LinearLayout xmlns:android="http://schemas.android.com/apk/res ...
- Android笔记(七十六) 点菜DEMO
一个朋友让看一下他的代码,一个点菜的功能,他和我一样,初学者,代码比我的都混乱,也是醉了,干脆想着自己写个demo给他看,原本想着听简单,半个小时应该就可以搞定,真正写的时候,画了3h+,汗颜... ...
- Android笔记(七十三) Android权限问题整理 非常全面
Android权限系统非常庞大,我们在Android系统中做任何操作都需要首先获取Android系统权限,本文记录了所有的Android权限问题,整理一下分享给大家. 访问登记属性 android.p ...
- Android笔记(七十二) Style和Theme
我们尝尝需要使用setText.setColor.setTextSize等属性来设置控件的样式,但是每个控件都需要设置这些属性,工作量无疑是巨大的,并且后期维护起来也不方便. Style Androi ...
- Android笔记(七十) AlertDialog
alertdialog可以在当前界面中弹出一个对话框,这个对话框在界面所有元素之上,可以屏蔽掉其他控件的交互能力,因此alertdialog常用于一些重要的内容警告. 使用AlertDialog.Bu ...
- Android笔记: Android版本号
由于有2套版本号 总是对应不准 记下来做过标记 Android 4.3 ----18 Android 4.2---17 Android 4.1---16 Android 4.0.3---15Andro ...
随机推荐
- break 和 continue 的用法
break 是结束循环 continue 是结束本次循环,接下下一个循环
- jQuery根据style筛选元素
<div style="display:block;"> <input/> </div> <div style="display ...
- PLSQL集合类型的使用总结
PLSQL集合类型的使用总结 在pl sql 中,集合(collection) 是一组有序的元素组成的对象,这些元素的类型必须一致. pl sql 将collection 分成3 类,分别为Assoc ...
- 【Leetcode_easy】836. Rectangle Overlap
problem 836. Rectangle Overlap solution: class Solution { public: bool isRectangleOverlap(vector< ...
- C#中 IEnumerable, ICollection, IList, List的使用
List是類,實現了IList接口,IList繼承了ICollection,ICollection繼承了IEnumerable,IEnumerable是其中最底層的接口. 實現IEnumerable接 ...
- 10点睛Spring MVC4.1-全局异常处理
10.1 全局异常处理 使用@ControllerAdvice注解来实现全局异常处理; 使用@ControllerAdvice的属性缩小处理范围 10.2 演示 演示控制器 package com.w ...
- Spring之28:AliasRegistry&SimpleAliasRegistry
AliasRegistry接口定义了alias的基本操作. package org.springframework.core; public interface AliasRegistry { //对 ...
- ListView控件的理解——自洽理论
写在前面的话: *标题中已经说明,是自洽理论.因此,有几率会有理解错误.但是,你不可以因此骂我. -我这个人经不起别人的批评,如果你批评我,我就,我就.... ## <第一行代码>读书笔记 ...
- Spyder中代码提示功能添加
问题描述:Spyder中编写python程序时,无函数智能提示.如想要输入np.reshape,无reshape提示 预期目标:输入 np. 然后智能提示reshape 解决方法: 第一步:进入本地 ...
- python学习-58 configparse模块
configparse模块 1.生成文件 import configparser # 配置解析模块 config = configparser.ConfigParser() # config = { ...