layout_weight及常见属性解析

我们看一下下面的代码

<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"
    android:orientation="horizontal"
    >
    <TextView
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:background="#f00"
        android:text="111111111111"
        android:gravity="center"
        />
     <TextView
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_weight="2"
        android:background="#0f0"
         android:gravity="center"
        android:text="2"
        />
      <TextView
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_weight="3"
        android:background="#00f"
         android:gravity="center"
        android:text="3"
        />
</LinearLayout>

看到上面的代码 我们预期的效果是什么样子的 下面让一下我们的效果

我觉得这个不是我们希望的结果 我们期望的是这样的

那么上面的代码怎样才能实现这样的效果呢 只需要在linelayout标签中加上一个属性

android:baselineAligned=”false”

下面我们将第一个空间的宽度设置为自适应

<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"
    android:orientation="horizontal"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:background="#f00"
        android:text="111111111111"
        android:gravity="center"
        />
     <TextView
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_weight="2"
        android:background="#0f0"
         android:gravity="center"
        android:text="2"
        />
      <TextView
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_weight="3"
        android:background="#00f"
         android:gravity="center"
        android:text="3"
        />
</LinearLayout>

我们再看一下效果

这样我们可以总结一下

Linelayout中的layout_weight属性首先按照控件声明的尺寸进行分配然后再将剩下的尺寸按 weight分配

下面我们再实现第三个例子 也就是将所以控件的宽度设置为充满

比例我们也改一下

<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"
    android:baselineAligned="false"
    android:orientation="horizontal"
    >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:background="#f00"
        android:text="111111111111"
        android:gravity="center"
        />
     <TextView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_weight="2"
        android:background="#0f0"
         android:gravity="center"
        android:text="2"
        />
      <TextView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_weight="2"
        android:background="#00f"
         android:gravity="center"
        android:text="3"
        />
</LinearLayout>

看看我们的效果图

可以看到我们权重为1的比权重为2的所占的 位置都宽 那么这个是因为什么呢 就需要我们上面得出的结论

首先偶们假设整个屏幕的宽度是480dp

480-480*3=-480*2;

textview1 : 480-480*2*1/5=480*3/5

textview2.3: 480-480*2*2/5=480*1/5

由上面的算数我们可以看出第一个textview占3份 第二个第三个textview占一份

我们总结:控件的宽度+父控件剩余宽度*比例

第四个例子 我们的textview占据一行的一半

<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"
    android:baselineAligned="false"
    android:weightSum="2"
    android:orientation="horizontal"
    >
    <TextView
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:background="#f00"
        android:text="111111111111"
        android:gravity="center"
        />

</LinearLayout>

我们可以像上面这样实现 总的权重设置为2 但是我们的textview的权重设置为1 就是下面这样的效果

带layout的属性都是布局的属性 不带的都是自身的属性

时间: 2024-10-20 12:56:54

layout_weight及常见属性解析的相关文章

Android技术14:Android中layout_weight属性解析

为了更好的对空间进行布局,在LinearLayout中使用layout_weight,然后对于这一属性,在有些书上或者Android的初学者直接认为layout_weight值越大,控件权重就越大,所占用的空间就越大或者layout_wight值越小,控件空间就越大.这两种都是片面的,没有真正认识到layout_weight含义以及如何布局.下面首先演示使用代码为什么会有这两种感觉. 1.演示权重成反比 LinearLayout设置水平布局,然后里面空间宽度为fill_parent,layout

GCC 常见错误解析

1GCC 常见错误解析一.错误类型第一类∶C 语法错误错误信息∶文件source.c 中第n 行有语法错误(syntex errror).这种类型的错误,一般都是 C 语言的语法错误,应该仔细检查源代码文件中第n 行及该行之前的程序,有时也需要对该文件所包含的头文件进行检查.有些情况下,一个很简单的语法错误,gcc 会给出一大堆错误,此时要保持清醒的头脑,不要被其吓倒,必要的时候再参考一下C 语言的基本教材.第二类∶头文件错误错误信息∶找不到头文件head.h(Can not find incl

IE6常见CSS解析Bug及hack

IE6常见CSS解析Bug及hack ###### 1)图片间隙 描述:在div,dl,li中插入图片时,图片会将盒子下方撑大3px~5px(设置高度后依旧被撑大) ??? hack1:将</div>与<img/>写在一行上(针对div): ??? hack2:将<img/>转为块状元素,添加声明:display:block;(都有效) ??? hack3:给父元素添加:font-size:0,需要给子元素单独添加font-size;(都有效) ??? hack4:给父

UIView的常见属性和方法

- (void)viewDidLoad { [super viewDidLoad]; // 临时View UIView *temp = [[UIView alloc] init]; temp.frame = CGRectMake(0, 0, 100, 100); [self.view addSubview:temp]; //UIView的常见属性 //1. 获得自己的父控件 [temp superview]; //2. 获得自己所有的子控件对象 [temp subviews]; //3. 控件的

UIPickerView的常见属性

一.UIPickerView 1.UIPickerView的常见属性 // 数据源(用来告诉UIPickerView有多少列多少行) @property(nonatomic,assign) id<UIPickerViewDataSource> dataSource; // 代理(用来告诉UIPickerView每1列的每1行显示什么内容,监听UIPickerView的选择) @property(nonatomic,assign) id<UIPickerViewDelegate>  

Android ListView常见属性问题

Question 1: listview在拖动的时候背景图片消失变成黑色背景.等到拖动完毕我们自己的背景图片才显示出来. 解决办法: xml中: android:scrollingCache="false"  或者 android:cacheColorHint="#00000000" 代码中: setScrollingCacheEnabled(false)  或者 setCacheColorHint(0)  或者setCacheColorHint(Color.TRA

以《淘宝网》为例,描绘质量属性的六个常见属性场景

以<淘宝网>为例,描绘质量属性的六个常见属性场景. 1.可用性 可用性与系统故障及其后果相关.当系统不再提供其规范中所说的服务时,就出现了系统故障.系统用户可以观察到此类故障. 可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况下能够恢复正常运行的速度来衡量的 刺激源 用户 刺激 很多用户同时访问,系统出现崩溃 制品 系统 环境 正常操作 响应 系统检测到事件:记录故障,通知系统 响应度量 两分钟后,系统可以继续正常使用 2.可修改性 两个关注点:可以修改什么?何时

UIScrollView常见属性

什么是UIScrollView •设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限 • •当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容 • •普通的UIView不具备滚动功能,不能显示过多的内容 • •UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容 •举例:手机上的“设置”.其他示例程序 •如果UIScrollView无法滚动,可能是以下原因: Ø没有设置contentSize Øscroll

UIView常见属性与方法

常见属性: @property(nonatomic,readonly) UIView    *superview; 获得自己的父控件对象 @property(nonatomic,readonly,copy) NSArray   *subviews; 获得自己的所有子控件对象 @property(nonatomic) NSInteger   tag; 控件的ID(标识),父控件可以通过tag来找到对应的子控件 @property(nonatomic) CGAffineTransform   tra