开发者社区> ghost丶桃子> 正文

Android 布局学习之——LinearLayout的layout_weight属性

简介:
+关注继续查看

 一直对layout_weight属性感到比较困惑,今天学习一下,来深入了解layout_weight属性和它的用法。

  •      定义

    首先,看看Android官方文档是怎么说的,毕竟人家才是权威嘛。

    

     

    官方文档的意思是:

                 layout_weight属性用于分配LinearLayout中的的额外空间(extra space)。

                 如果View不想拉伸的话,layout_weight值设置为0。否则的话这些像素会按比例分配到

                 这些weight值大于0的所有View。

    换句话说,也就是android:layout_weight属性告知LinearLayout如何进行子组件的布置安排。

  •  例子

    说这么多,不如用几个例子来形象的描述它:

   1.首先设置一个Linear_Layout布局,方向设置为水平,放置两个TextView,不设置Layout_weight值。可以看到

   空余的白色部分就是官方文档中所说的extra space(额外空间)。

         

  布局文件代码:

  

复制代码
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="wrap_content"
 5     android:orientation="horizontal" >
 6 
 7     <TextView
 8         android:layout_width="wrap_content"
 9         android:layout_height="wrap_content"
10         android:background="#f00"
11         android:text="TextView1" />
12     <TextView 
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:background="#0f0"
16         android:text="ThisIsTextView2"
17         />
18 </LinearLayout>
复制代码

 

    2.设置两个TextView的Layout_weight的值都为1。

     在上面的xml文件中,给每个TextView增加一个"android:layout_weight=1"属性。

       

  TextView1,TextView2的layout_weight值分别设置为2和1,1和2,看运行的效果:

  2和1:

        

  1和2:

        

       相信通过以上例子和图片,大家应该对layout_weight属性的用法已经非常理解了。

      那么,问题又来了。如果我想要将两个子组件分配相同的宽度或高度,那该怎么设置layout_weight呢?

      只需要将各子组件的layout_width值设置为0,这样就避开了第一步的空间分配。

      这样LinearLayout就只会考虑使用layout_weight值来完成空间的分配了。

     

复制代码
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="wrap_content"
 5     android:orientation="horizontal" >
 6 
 7     <TextView
 8         android:layout_width="0dp"<!--将layout_width值设置为0dp以避开第一步的空间分配-->
 9         android:layout_height="wrap_content"
10         android:background="#f00"
11         android:layout_weight="1"<!--LinearLayout将会按此值分配空间-->
12         android:text="TextView1" />
13     <TextView 
14         android:layout_width="0dp"
15         android:layout_height="wrap_content"
16         android:background="#0f0"
17         android:layout_weight="1"
18         android:text="ThisIsTextView2"
19         />
20 </LinearLayout>
复制代码

       

      希望这篇文章对大家有所帮助,如果喜欢,请推荐,谢谢~

      如果转载,请在文章开头处注明本博客地址:http:www.cnblogs.com/JohnTsai

      欢迎讨论交流,邮箱:JohnTsai.Work@gmail.com

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
android RelativeLayout 控件绕中心点布局
android RelativeLayout 控件绕中心点布局
12 0
android 检测外接键盘并设置输入法布局
android 检测外接键盘并设置输入法布局
31 0
android 物理键盘布局
android 物理键盘布局
26 0
Android使用绝对布局AbsoluteLayout动态添加控件
Android使用绝对布局AbsoluteLayout动态添加控件
32 0
RelativeLayout布局实验(Android Studio)
RelativeLayout布局实验(Android Studio)
44 0
Android查看UI布局相关工具
Android查看UI布局相关工具
114 0
安卓的几种布局介绍
安卓开发工作有相当一部分时间在画布局,而布局构建的好坏也影响到用户的体验和程序功能的健全,而我们最常见的有几种布局:LinearLayout(线性布局)、TableLayout(表格布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、AbsoluteLayout(绝对布局)、GridLayout(网格布局)、ConstraintLayout(约束布局)。
61 0
安卓APP布局——相对布局常用属性
安卓APP布局——相对布局常用属性
64 0
Android | 带你探究 LayoutInflater 布局解析原理
Android | 带你探究 LayoutInflater 布局解析原理
38 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载