LinearLayout中的layout_weight属性详解

线性布局中的layout_weight顾名思义即为定义各个组件在整个界面中所占的权重。常用两种实现方法

1:最为简单的实现方法,当orientation为水平时垂直layout_height=‘‘0dp",同理当orientation为垂直时,将layout_width设定为0dp,此时在一个直接父布局中layout_width中的数值越大这个组件占的界面就越大。示例代码如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        >  

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:background="#ADFF2F"
            android:layout_weight="1"/>  

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:background="#DA70D6"
            android:layout_weight="2"/>  

    </LinearLayout>  

运行图:

下面来讨论另外一种情况,当水平按照权重分割屏幕时,此时将layout_width设置为wrap_content,此时layout_weight的数值仍遵循数值越大占的屏幕越大。

那么假如layout_width设置为fill_parent呢?

这里介绍一种计算方法,这里预先设置一个变量暂时定义为queshao(缺少),例如在一个orientation为horizontal的LinearLayout中,有三个组件的layout_width都设定为了fill_parent,此时queshao=1-3 = -2(因为只有一个parent大家都想fill_parent,那么此时就缺少一个parent)

假如这三个组件的layout_weight依次为1 2 3,那么公式如下:

第一个组件:1-queshao*(1/(1+2+3))=2/3

第二个组件:1-queshao*(2/(1+2+3)) = 1/3

第三个组件:没空了~~

示例代码及运行图:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/LinearLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >  

        <TextView
            android:layout_weight="1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="one"
            android:background="#98FB98"
         />
         <TextView
            android:layout_weight="2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="two"
            android:background="#FFFF00"
         />
         <TextView
            android:layout_weight="3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="three"
            android:background="#FF00FF"
         />  

    </LinearLayout>  

未完待续。。。

时间: 2024-10-20 21:45:17

LinearLayout中的layout_weight属性详解的相关文章

layout_weight属性详解

看到上面这段代码,大家肯定认为三个TextView的宽度是1:2:2,但实际上是如图1这样的,宽度之比确实是1:2:2,但为什么第一个和后两个是齐平的呢?下面我给大家画一条线,可以看到虽然控件是没有对齐的,但是三个TextView里的第一行文本是对齐的,这是因为TextView 在LinearLayout中会参考父类的基线BaseLine,如图2,如何避免这个问题呢,只需设置LinearLayout的一个属性即可,,如图3. 图一                                

android:layout_weight属性详解 (转)

在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示.android并没用提供table这样的控件,虽然有TableLayout,但是它并非是我们想象中的像html里面的table那么好用,我们常用ListView实现table的效果,但是列对齐确比较麻烦,现在用LinearLayout及属性android:layout_weight能很好地解决.下面我们共同体验下layo

android中xmlns:tools属性详解

第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果. 但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了text.因此为了在ide中预览效果,你必须在xml中为TextView控件设置android:text属性 <TextView android:id="@+id/text_main" android:layout_width="match_parent" and

android中xml tools属性详解

第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果. 但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了text.因此为了在ide中预览效果,你必须在xml中为TextView控件设置android:text属性 1 2 3 4 5 6 7 <TextView   android:id="@+id/text_main"   android:layout_width="matc

android中xml tools属性详解(转)

第一部分 安卓开发中,在写布局代码的时候,ide可以看到布局的预览效果. 但是有些效果则必须在运行之后才能看见,比如这种情况:TextView在xml中没有设置任何字符,而是在activity中设置了text.因此为了在ide中预览效果,你必须在xml中为TextView控件设置android:text属性 1 2 3 4 5 6 7 <TextView   android:id="@+id/text_main"   android:layout_width="matc

Android中的windowSoftInputMode属性详解

如何实现软键盘不自动弹出,使用的方法是设置android:windowSoftInputMode属性.那么,这个属性到底是干什么的,他有什么作用呢?今天这篇文章,就是探索android:windowSoftInputMode属性的作用的. 首先,我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的. android:windowSoftInputMode属性一共有9个取值,分别是: stateUnspecified,stateUnchanged,stateH

Android逆向之旅---Android中的sharedUserId属性详解

一.前言 今天我们来看一下Android中一个众人熟悉的一个属性:shareUserId,关于这个属性可能大家都很熟悉了,最近在开发项目,用到了这个属性,虽然知道一点知识,但是感觉还是有些迷糊,所以就写篇文章来深入研究一下. 关于Android中的sharedUserId的概念这里就简单介绍一下: Android给每个APK进程分配一个单独的空间,manifest中的userid就是对应一个分配的Linux用户ID,并且为它创建一个沙箱,以防止影 响其他应用程序(或者其他应用程序影响它).用户I

CSS3中的transition属性详解

一.语法 transition: property duration timing-function delay transition属性是个复合属性,她包括以下几个子属性: transition-property :规定设置过渡效果的css属性名称 transition-duration :规定完成过渡效果需要多少秒或毫秒 transition-timing-function :指定过渡函数,规定速度效果的速度曲线 transition-delay :指定开始出现的延迟时间 默认值分别为:al

Struts2中Bean配置属性详解

Struts2是一个高度可扩展的框架,框架的大部分核心组件都是以配置的方式写在配置文件里的.当开发 者需要替换其核心组件时只需要提供自己的实现类,并且配置到文件中即可.dakaiStruts2-core-x.x.x.jar 文件,看到该文件中配置了大量的bean定义: ... <bean type="com.opensymphony.xwork2.ActionProxyFactory" name="xwork" class="com.opensymp