Android 线性布局(LinearLayout)相关官方文档 - 指南部分

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

Android 官方文档线性布局相关资源链接汇总如下:

android-sdk-macosx-4.4.2/docs/guide/topics/ui/layout/linear.html

android-sdk-macosx-4.4.2/docs/reference/android/widget/LinearLayout.html

android-sdk-macosx-4.4.2/docs/reference/android/widget/LinearLayout.LayoutParams.html

由于在线文档访问困难,这里给出的是本地文档的相对路径。

重点摘要:

1、未指定权重的子视图,其是否占空间,所占空间具体由什么来决定,是按内容,还是按设定的宽、高值,或者由子视图重载 android.view.View 的 onMeasure 方法?

a、理论分析结果:由原文句子 “The other two will expand equally to fill the space remaining after all three fields are measured. ”,可以初步推断是按 onMeasure 测定的宽、高来确定所占空间。而针对于大多数组件,会重载该方法来确定其内容所占空间,也即这一组件的宽、高设定为 "wrap_content" 所占空间。

b、实际测试结果待补充。

2、为何正文中提示,宽、高属性要设置为 "0dp" ?如果没设置为  "0dp" ,其值是否会对子视图本身所占的无权重空间有影响?如果按权重分配的空间没有设定的宽或高值大,会怎样?如果宽或高设置为  "0dp" ,此时权重分配的空间仍没有其本身内容占用空间大,会怎样?

a、理论分析结果:没思路,不知道会是啥结果;

b、实际测试结果待补充。

译文来源:guide/topics/ui/layout/linear.html

线性布局 Linear Layout

本文档中内容 
IN THIS DOCUMENT

  1. 布局权重 
    Layout Weight
  2. 示例 
    Example

关键类
KEY CLASSES

  1. 线性布局 
    LinearLayout
  2. 线性布局.布局参数
    LinearLayout.LayoutParams

线性布局 是一个视图分组,它在单一方向上对齐所有的子视图,或者竖直方向或者水平方向。可以使用  android:orientation  属性来指定布局方向。
LinearLayout
 is a view group that aligns all children in a single direction, vertically or horizontally. You can specify the layout direction with the android:orientation attribute.

线性布局的所有子视图是按一个挨一个地堆叠,所以一个竖向列表每行只会有一个子视图,无论多宽;水平列表只有一行高(最高子视图的高度,加上内填充)。线性布局遵守子视图间的外边距以及每一个子视图的重力(靠右、居中或靠左)。
All children of a LinearLayout are stacked one after the other, so a vertical list will only have one child per row, no matter how wide they are, and a horizontal list will only be one row high (the height of the tallest child, plus padding). A LinearLayout respects margins between children and the gravity (right, center, or left alignment) of each child.

布局权重
Layout Weight


平等加权子视图
Equally weighted children

要创建一个线布局,要在其内部,使每一个子视图使用相同数量的屏幕空间,那么设置每一个设图的android:layout_height 属性为 "0dp"(针对于竖向布局)或者 android:layout_width 属性为 "0dp"(针对于水平布局),然后,为每一个视图设置 android:layout_weight 属性值为 "1"。
To create a linear layout in which each child uses the same amount of space on the screen, set the android:layout_height of each view to "0dp" (for a vertical layout) or the android:layout_width of each view to "0dp" (for a horizontal layout). Then set the android:layout_weight of each view to "1".

线性布局还支持通过属性 android:layout_weight 给各个子视图赋一个权重值。这个属性按照应该在屏幕上占有多少空间来给一个视图赋一个权重值。更大的权重值将允许它扩展以填充父视图中剩余的空间。子视图可以指定一个权重值,这样一来所有余下的视图组空间都会分配给声明了权重的那部分子视图。默认值是 0 。
LinearLayout
 also supports assigning a weight to individual children with the android:layout_weight attribute. This attribute assigns an "importance" value to a view in terms of how much space is should occupy on the screen. A larger weight value allows it to expand to fill any remaining space in the parent view. Child views can specify a weight value, and then any remaining space in the view group is assigned to children in the proportion of their declared weight. Default weight is zero.

例如,如果有三个文本哉,并且其中两个声明了 1 的权重,而另一个没有给定权重,那么第三个没有权重的文本域不会增长,只会占用其内容必需的区域(待测试:如果未指定权重而指定了宽或高,那么内容必需的区域是指实际内容还是宽、高值?还是通过 onMeasured 方法获得该视图的内容必需的区域?)。其它两个域就会平等地填充在所有三个域测量后余下的空间。如果第三个字段随后给定了一个 2 的权重(而不是 0 了),那么它现在声明的比其它两个权重更重了,这样它获得总共余下空间的一半,而头两个等分余下的部分。
For example, if there are three text fields and two of them declare a weight of 1, while the other is given no weight, the third text field without weight will not grow and will only occupy the area required by its content. The other two will expand equally to fill the space remaining after all three fields are measured. If the third field is then given a weight of 2 (instead of 0), then it is now declared more important than both the others, so it gets half the total remaining space, while the first two share the rest equally.

例子
Example



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to" />
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/subject" />
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message" />
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="@string/send" />
</LinearLayout>

有关线性布局每一个子视图可用的属性的详细描述,可以查看 LinearLayout.LayoutParams 。
For details about the attributes available to each child view of a LinearLayout, seeLinearLayout.LayoutParams.

Except as noted, this content is licensed under Creative Commons Attribution 2.5. For details and restrictions, see theContent License.

About Android  |  Legal  |  Support

时间: 2024-10-27 11:19:31

Android 线性布局(LinearLayout)相关官方文档 - 指南部分的相关文章

Android 线性布局(LinearLayout)相关官方文档 - 参考部分

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Android 官方文档线性布局相关资源链接汇总如下: android-sdk-macosx-4.4.2/docs/guide/topics/ui

Android线性布局LinearLayout(七)

一.先了解几个属性: 1.布局 1) android:orientation="vertical" 垂直布局 2)android:orientation="horizontal"  水平布局 2.控件内容高和宽布局 1) android:layout_width="match_parent" ,布满整个屏幕. [匹配父窗口] 2)android:layout_height="wrap_content",布局元素将根据内容更改大

Android 线性布局(LinearLayout)相关官方文档 - 布局参数部分

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作.

Android 5.x OTA Update官方文档(八、图说Recovery UI)

写在前面: 若能直译,不会意译,意译不成,为了选择不误导他人也会漏译无伤大雅的部分,英语是硬伤,如果有误译,请路过的朋友帮忙指正,以免误导更多的朋友. RecoveryUI除了之前提到的标题.选项菜单.提示性文字还有另外的一个重要的成员图片.在正常的更新过程中,用户看到的仅仅是图片(这里指的标准的OTA升级流程,如开机进入recovery模式.安装更新时进度条发生变化,最后再开机进入正常模式),而且在这个过程,用户是没有机会与RecoveryUI进行交互的.但是一旦在更新过程中出现了异常,用户所

Android 5.x OTA Update官方文档(九、Sideloading-侧面安装机制)

写在前面: 本篇博文漏译了很多,英文功底比较好的同学可以选择阅读原版文档,如果方便请分享翻译后文档给大家,谢谢. recovery有一个侧面安装(sideloading)机制来方便我们手动的安装更新而不在使用OTA的方式.这种机制对于调试和维护是很有帮助的,特别是当我们无法正常启动我们的系统的时候. 目前来说我们,有了这种机制,我们可以在设备的SD卡中载入更新包.在没有启动设备的情况下,我们可以通过电脑将更新包拷贝到SD卡上,然后再将SD卡插入到设备中进行侧面安装.而且如果Android设备当前

Android 5..x OTA Update官方文档(六、定制Recovery UI)

recovery界面 为了支持不同的硬件设备(物理按键.显示.LEDs等),我们可以定制recovery界面进行可视化显示,并进行相关的操作.那么我们可以通过继承bootable/recovery/defalust_device.cpp,并重写相关的函数来为我们的设备进行可视化定制.因此本篇博文旨在为大家介绍如何构建一个能够实现recovery界面定制的静态库.首先来了解西面这段头文件: device/yoyodyne/tardis/recovery/recovery_ui.cpp #inclu

Android 5.x OTA Update官方文档(十、版本签名)

在Android中,一般来说有两个地方使用加密签名. 1.每个.apk文件必须进行签名.Android的程序包管理器通过两种方式使用签名: 当一个应用程序被替换时,只有相同签名的应用才能操作旧版本的数据. 两个应用如果签名一致,那么这两个应用可以共享User ID和用户数据. 2.OTA更新包必须进行签名否则更新程序无法进行安装.(注!我们制作更新包的时候如果不指定key,系统会指定默认的key进行签名,如testkey.) 证书和秘钥 每个秘钥需要两个文件:扩展名为.x509.pem的证书(公

Android 5..x OTA Update官方文档(七、构建设备)

我们通过调用recovery_ui.cpp中make_device()函数来创建一个Device的实例,如下: class TardisDevice : public Device { // ... all the above methods ... }; Device* make_device() { return new TardisDevice(); } 编译recovery_ui.cpp 再通过前一篇对recovery_ui.cpp的介绍我们来介绍一下如何为recovery_ui.cpp

Android官方文档之App Resources(下)

本文将介绍Android中Resource Types的drawable.menu.layout.如需访问官方原文,您可以点击这些链接: <Drawable Resources> <Layout Resource> <Menu Resource> 如需了解Android中的其他资源介绍(Animation.Color State List.String.Style),您可以点击这个链接:<Android官方文档之App Resources(中)>. 布局资源