Android中layout_weight的属性理解
https://www.zybuluo.com/zzudhj/note/102067
在Android开发过程中,在编写布局文件经常会用layout_weight属性:从字面意思上看权重、比值、按比例。。。
通过例子来看看layout_weight的用法
example1:
该布局有三部分组成,title、edit、bottom,其中,为了满足edit可以填充父窗口,可以为EditText添加layou_weight属性。通过Dump view UI hierarchy for Automatorfen 分析,得到结构如图:
通过代码实现
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="48dp"android:gravity="center"android:text="标题1" /><EditTextandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:layout_width="0dp"android:layout_height="48dp"android:layout_weight="1"android:text="save" /><Buttonandroid:layout_width="0dp"android:layout_height="48dp"android:layout_weight="1"android:text="cancel" /></LinearLayout></LinearLayout>
有了初步的认识,就来看看经常会遇到情景
example2:
<TextViewandroid:layout_width="0dp"android:layout_height="match_parent"android:text="textview1"android:background="#ee0000"android:layout_weight="1"/><TextViewandroid:layout_width="0dp"android:layout_height="match_parent"android:text="textview2"android:background="#eeee00"android:layout_weight="2"/><TextViewandroid:layout_width="0dp"android:layout_height="match_parent"android:text="textview3"android:background="#ee0ee0"android:layout_weight="2"/>
example3:
<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="textview1"android:background="#ee0000"android:layout_weight="1"/><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="textview2"android:background="#eeee00"android:layout_weight="2"/><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="textview3"android:background="#ee0ee0"android:layout_weight="2"/>
其中,example2与example3区别
<TextViewandroid:layout_width="xxx".../>
分析可以知道layout_weight表示:控件长度= 原来长度(Length) + 屏幕剩余(SLength)* weight_i,其中屏幕长度为L
example2中:
Length = 0,
SLength= L,
textview1.weight = 1/5
textview1.length = 1/5L;
同理 textview2.length = 2/5L
textview3.length = 2/5L
example3中:
Length= L,
SLength = -2L,
textview1.length = L + (- 2/5 L) = 3/5L
textview2.length = L + (- 4/5 L) = 1/5L
textview3.length = L + (- 4/5 L) = 1/5L
ps:
textview1.weight =1
textview2.weight =2
textview3.weight =3
如果这样设置layout_weight的值,当 android:layout_width="match_parent"的情景下,
你会发现
textview1.length = L + (- 2/6 L) = 2/3L
textview2.length = L + (- 4/6 L) = 1/3L
textview3 不见啦啦啦
Android中layout_weight的属性理解的更多相关文章
- 【转】Android:Layout_weight的深刻理解
原文网址:http://mobile.51cto.com/abased-375428.htm 本文详细介绍了Android布局中Layout_weight的属性,它是用来分配属于空间的一个属性,你可以 ...
- Android中的windowSoftInputMode属性详解
这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下 在前面的一篇文章中 ...
- Android:LinearLayout布局中Layout_weight的深刻理解
首先看一下LinearLayout布局中Layout_weight属性的作用:它是用来分配属于空间的一个属性,你可以设置他的权重.很多人不知道剩余空间是个什么概念,下面我先来说说剩余空间. 看下面代码 ...
- android中布局文件中 layout_weight 的属性详解
在不同的情况下,layout_weight属性作用是不同的.主要有两种属性: 1.当布局中的控件的尺寸(宽和高)都有指定时,它所表示的该控件在父容器中的比重,及它在父容器中所占的比例,数值越大,比重越 ...
- Android中Edittext的属性
//此为转载别人的,挺不错的 1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" ...
- Android:Layout_weight的深刻理解
最近写Demo,突然发现了Layout_weight这个属性,发现网上有很多关于这个属性的有意思的讨论,可是找了好多资料都没有找到一个能够说的清楚的,于是自己结合网上资料研究了一下,终于迎刃而解,写出 ...
- [转]Android:Layout_weight的深刻理解
http://mobile.51cto.com/abased-375428.htm 最近写Demo,突然发现了Layout_weight这个属性,发现网上有很多关于这个属性的有意思的讨论,可是找了好多 ...
- android中xml tools属性详解
第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果. 但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了 ...
- android中xmlns:tools属性详解
今天读到一篇总结的非常棒的文章,写的逻辑很清晰也很实用,很少见到如此棒的文章了.就原文转发过来,我把格式给整理了一下,分享给园子里的各位朋友!好久没写博客了,就为2015年的11月留份纪念吧.希望对你 ...
随机推荐
- Java学习日记-2.2 增强后的switch-case
switch-case语句的基本格式 switch(expression){ case condition1: ... break; case condition2: ... break; case ...
- Assertions
JUnit提供了许多重载的断言方法,这些方法均可以通过"import static org.junit.Assert.*"导入.方法的参数顺序一般都是([失败时打印的字符串消息], ...
- SSLStrip 的未来 —— HTTPS 前端劫持
前言 在之前介绍的流量劫持文章里,曾提到一种『HTTPS 向下降级』的方案 —— 将页面中的 HTTPS 超链接全都替换成 HTTP 版本,让用户始终以明文的形式进行通信. 看到这,也许大家都会想到一 ...
- 4G时代来临,运营商为谁搭台献唱?
4G时代已然来临.对用户而言,4G意味着更快的传输速度,以及更优质的移动网络体验. 只是对运营商而言.怎样部署4G却成了一大难题.众所周知,在全球范围内,4G LTE成为眼下最率先的移动宽带解 ...
- C#视频总结
C#视频利用了四天看完了,由于有VB的基础.所以看起来并没有感觉太吃力.在主要的数据类型.运算之间没有多大的差别. 在循环控制语句上也就是大同小异.在类.继承和多态方面可能有一些陌生,可是经过了前期的 ...
- js上拉加载、下拉刷新的插件
之前在网上找那种下拉刷新,上拉加载的插件,有一款IScroll,但是用起来太麻烦,于是就自己写了款,但依赖于jquery.js,bug肯定有,希望评论提出. js: /* 简洁的下拉刷新,上拉加载插件 ...
- Visual Studio写的项目在 IIS 服务器上运行的两种简单方法
首先需要PC上开启了IIS服务,相关方法网上很多,也很简单 第一种:直接在项目中操作 1.创建一个项目,然后右击选中项目,右击,单击属性,打开项目属性标签页面 如图,选择Web标签,在服务器栏目中选中 ...
- Android布局文件-错误
View requires API level 14 (current min is 8): <?xml version="1.0" encoding="utf-8 ...
- fastUtils学习
比传统java集合工具类速度更快 google的guava也新增了java容器新的功能,功能更加强大,参考文档:http://www.ibm.com/developerworks/cn/java/j- ...
- ajax提交请求为啥url要用这个函数encodeURI
参考如下: 如果你是通过form提交的,那就不需要用这个了.但是如果是你使用url的方式例如:ajax提交到后台的,就需要对url进行encodeURI编码,否则,会导致后台出现各种乱码,不加enco ...