3.2.1 LinearLayout(线性布局)

标签: StudyNote


本文声明
本文由Coder-pig编写,想了解其他内容,可见CoderPig’s Android Study Note——目录
尊重作者劳动成果,未经本人授权,禁止转载!违者必究!
目录源地址:http://blog.csdn.net/coder_pig/article/details/51348769


1.基本属性

  • orientation:设置布局中组件的排放方式,horizontal(水平),vertical(垂直)
  • gravity:控制子元素的对齐方式,可多个组合(left|buttom)
  • layout_gravity:控制改组件在父容器中的对齐方式

2.weight(权重)属性详解

核心公式:

View的宽/高 = 原有宽度(android:layout_width) + 剩余空间的占比!

①推荐用法:把widht/height设置为0dp

按比例划分水平方向:将涉及到的View的android:width属性设置为0dp,
然后设置为android weight属性设置比例即可;类推,竖直方向,只需设
android:height为0dp,然后设weight属性即可! 比如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><TextView
        android:layout_width="0dp"android:layout_height="48dp"android:background="#03A9F4"android:layout_weight="1"android:text="11111111111"/><TextView
        android:layout_width="0dp"android:layout_height="48dp"android:background="#FFEB3B"android:layout_weight="2"android:text="B"/><TextView
        android:layout_width="0dp"android:layout_height="48dp"android:background="#4CAF50"android:layout_weight="3"android:text="C"/></LinearLayout>

咦,文字左对齐好像不怎么好看,我们为每个TextView加一个android:gravity=”center”
刚加一个就发现:

卧槽,错位了,什么鬼,我们为剩下两个TextView也加上:android:gravity=”center”

好吧,其实引起这个原因是baselineAligned属性引起的,默认为true,就是让布局控件
中子控件内的文字的基线对齐,所以会出现这个错位的问题,只要在外层的LinearLayout
中将这个属性设置为false即可解决这个问题。

②不建议用法:wrap_content

这个就不怎么好用了,先分配能够显示包含他们的内容的宽/高,然后布局容器的宽/高 减去
去这几个的宽/高和求出剩余空间的宽/高,再按比例分配给每个View。

③match_parent

这个稍微好算一点,都设置成match_parent,weight设置为:1:2:3的,结果是这样的

换成1:2:2呢?

接着我们来解释下为什么会出现这个结果,先说下1:2:3的

1:三个初始宽都是macth_parent,那么剩余的空间 = (1 - 3) * macth_parent = -2 * macth_parent
2:接着把剩余的空间-2 * macth_parent分成6份(1+2+3),接着按比例分配:、
A的宽度 = macth_parent + (-2 * macth_parent /6 * 1) = 2/3 macth_parent;
B的宽度 = macth_parent + (-2 * macth_parent /6 * 2) = 1/3 macth_parent;
C的宽度 = macth_parent + (-2 * macth_parent /6 * 3) = 0 macth_parent;

非常简单,你可以按照上面的计算方法接着试下1:2:2,得到的结果会是:3:1:1.


3.weightSum设置子控件weight之和

可以巧妙的用这个东西来实现留白,效果见示例代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:weightSum="4"><TextView
        android:layout_width="0dp"android:layout_height="48dp"android:layout_weight="1"android:background="#03A9F4"android:gravity="center"android:text="A" /><TextView
        android:layout_width="0dp"android:layout_height="48dp"android:layout_weight="1"android:background="#FFEB3B"android:gravity="center"android:text="B" /></LinearLayout>


4.为LinearLayout设置分割线

方法有两种,第一种设置一个1px的View,第二种设置LinearLayout的divider相关的属性
divider相关属性:

  • divider设置作为分割线的图片,一般我们都会自己写一个shape来作为分割线。
  • showDividers设置分割线的位置,none(无),begining(开始),end(结束),middle(每两个组件间)
  • dividerPadding设置分割线的Padding

shape分割线模板:

 <?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle" ><size
         android:height="48dp"android:width="1dp" /><solid android:color="#000000" /> --></shape>

3.2.1 LinearLayout(线性布局)相关推荐

  1. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  2. Android零基础入门第25节:最简单最常用的LinearLayout线性布局

    原文:Android零基础入门第25节:最简单最常用的LinearLayout线性布局 良好的布局设计对于UI界面至关重要,在前面也简单介绍过,目前Android中的布局主要有6种,创建的布局文件默认 ...

  3. 精通android布局,Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件...

    标题图 UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个 ...

  4. Android 应用开发(36)---LinearLayout(线性布局)

    LinearLayout(线性布局) 本节开始讲Android中的布局,Android中有六大布局,分别是: LinearLayout(线性布局),RelativeLayout(相对布局),Table ...

  5. 常见界面布局之LinearLayout线性布局

    1.什么是LinearLayout线性布局 LinearLayout (线性布局)通常指定布局内的子控件水平或者轻直排列.在XML布局文件中定义线性布局的基本语法格式如下: <LinearLay ...

  6. new UI-布局之LinearLayout(线性布局)详解

    转载自:http://blog.csdn.net/coder_pig/article/details/42344615  --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪An ...

  7. java 界面线性布局_布局Layouts之LinearLayout线性布局

    从Hello world!开始,我们一直都是在一种布局下学习的,当然,对于基础内容的学习,还是没有任何问题的!但-- 在Android开发中UI设计也是十分重要的,当用户使用一个App时,最先感受到的 ...

  8. android线性布局设置控件固定在底部,Android UI组件LinearLayout线性布局详解

    LinearLayout 线性布局,该布局的继承关系: 1. 什么是线性布局 通俗的说感觉起来和线有关,参照线的特点,有么是横向的,要么是竖向的. LinearLayout是线性布局控件,它包含的子控 ...

  9. 【Android 】零基础到飞升 | LinearLayout(线性布局)

    2.2.1 LinearLayout(线性布局) 本节引言 本节开始讲Android中的布局,Android中有六大布局,分别是: LinearLayout(线性布局),RelativeLayout( ...

最新文章

  1. 沙龙预告 | 新书分享《崛起的超级智能:互联网大脑如何影响科技未来》
  2. 在windows中对torch1.7.1版本环境配置
  3. Day3-----delayPrompt
  4. Apache AB 压力测试
  5. NoSQL数据库Redis使用命令简介
  6. P91--商品保存debug完成
  7. 悖论对计算机科学影响,数学和计算机科学的核心逻辑悖论
  8. 雷军微博抽奖送蔚来汽车,中奖用户等9个月仍未兑现,蔚来官方回应...
  9. java hdu2011多项式求和
  10. strike F1 to retry boot,F2 for setup utility
  11. 1.第一本 docker 书 --- 简介
  12. 数据结构 第一章 绪论
  13. 时间格式转变 android,Android开发日期时间格式的转化
  14. 医咖会免费SPSS教程学习笔记—广义线性模型
  15. oracle 11g DG 物理搭建 DG切换模式
  16. 反激开关电源变压器设计实例讲解(定明芳)
  17. 透过年报看区块链股的含金量:无一披露此业务营收 近5成停留在研究
  18. python刷步数程序设计_【云函数 小米运动刷步数】云函数刷步数
  19. java gdal_gdal java环境配置
  20. bpf-bcc加载代码分析

热门文章

  1. 兔将十年大作《赤狐书生》特效解析:青蛙精篇
  2. 【数据结构】栈-C语言版
  3. 什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?
  4. wpa supplicant
  5. 淘宝UWP PC版邀请码已经发放给了前20名申请的博友。请在你们的博客园私信里查收。...
  6. 优盘安装红帽linux系统,从U盘安装 redhat linux 6.0及centos 6.4
  7. 音视频系列九 使用soundTouch实现音视频变速
  8. 洛谷P1287 盒子与球
  9. MySQL拷贝表结构、表数据总结
  10. Linux终端编程--termios