`
zhangcong170
  • 浏览: 71189 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

android布局之LinearLayout

阅读更多

声明:这是android官方网站上的例子,添加了自己的理解,望各位大牛们多多指教

main.xml


<?xml version="1.0" encoding="utf-8"?>
<!-- 
   <LinearLayout>
       线性版面配置,在这个标签中,所有元件都是按由上到下的排队排成的
 -->
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
   <!-- android:orientation="vertical" 表示竖直方式对齐
        android:orientation="horizontal"表示水平方式对齐
        android:layout_width="fill_parent"定义当前视图在屏幕上
                     可以消费的宽度,fill_parent即填充整个屏幕。
        android:layout_height="wrap_content":随着文字栏位的不同
        而改变这个视图的宽度或者高度。有点自动设置框度或者高度的意思
              
       layout_weight 用于给一个线性布局中的诸多视图的重要度赋值。
     所有的视图都有一个layout_weight值,默认为零,意思是需要显示
     多大的视图就占据多大的屏幕空 间。若赋一个高于零的值,则将父视
     图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight
       值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布
     局的layout_weight值中所占的比率而定。
     举个例子:比如说我们在 水平方向上有一个文本标签和两个文本编辑元素。
    该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。
    如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分
    在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。如果两个 
   文本编辑元素其中第一个的layout_weight值设置为1,而第二个的设置为2,
   则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要
              度越高)。
    -->
    <LinearLayout
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:layout_weight="1">
	<TextView
	    android:text="red"
	    android:gravity="center_horizontal"
	    android:background="#aa0000"
	    android:layout_width="wrap_content"
	    android:layout_height="fill_parent"
	    android:layout_weight="1"/>
	
	<TextView
	    android:text="green"
	    android:gravity="center_horizontal"
	    android:background="#00aa00"
	    android:layout_width="wrap_content"
	    android:layout_height="fill_parent"
	    android:layout_weight="1"/>
	
	<TextView
	    android:text="blue"
	    android:gravity="center_horizontal"
	    android:background="#0000aa"
	    android:layout_width="wrap_content"
	    android:layout_height="fill_parent"
	    android:layout_weight="1"/>
	
	<TextView
	    android:text="yellow"
	    android:gravity="center_horizontal"
	    android:background="#aaaa00"
	    android:layout_width="wrap_content"
	    android:layout_height="fill_parent"
	    android:layout_weight="1"/>
		
    </LinearLayout>
	
    <LinearLayout
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:layout_weight="2">
	
	<TextView
	    android:text="row one"
	    android:textSize="15pt"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:layout_weight="1"/>
	
	<TextView
	    android:text="row two"
	    android:textSize="15pt"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:layout_weight="1"/>
	
	<TextView
	    android:text="row three"
	    android:textSize="15pt"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:layout_weight="1"/>
	
	<TextView
	    android:text="row four"
	    android:textSize="15pt"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:layout_weight="1"/>
        
    </LinearLayout>
        
</LinearLayout>

 感觉这种形式有点像div+css的方式布局,不过这种方式的灵活性和div+css还是有些不及,主要是那android:layout_weight的值如何去确定,而且采用的是数值越小,重要度越高的方式,分配起来还得好好计算一下。

Views.java


package com.cn.view;

import android.app.Activity;
import android.os.Bundle;

public class Views extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

我使用的版本为1.5.欢迎朋友们讨论

分享到:
评论
7 楼 cdtdtc 2012-04-19  
啦啦啦   写得好
6 楼 foxty 2010-05-26  
litchi 写道
大家能讨论以下为什么再LinearLayout之间是反比的形式显示在屏幕上的吗,我觉得不符合逻辑啊。

为什么不都是以正比的形式显示呢


引用
# layout_weight 用于给一个线性布局中的诸多视图的重要度赋值。 
#      所有的视图都有一个layout_weight值,默认为零,意思是需要显示 
#      多大的视图就占据多大的屏幕空 间。若赋一个高于零的值,则将父视 
#      图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight 
#        值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布 
#      局的layout_weight值中所占的比率而定。 
#      举个例子:比如说我们在 水平方向上有一个文本标签和两个文本编辑元素。 
#     该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。 
#     如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分 
#     在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。如果两个  
#    文本编辑元素其中第一个的 layout_weight值设置为1,而第二个的设置为2, 
#    则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要 
#               度越高)。 


lz赶紧改改吧。

weight - 一看名字就知道不是一个用来做显示比例的,而是一个权重值。看看官方文档就明白是什么意思了。


引用

LinearLayout  also supports assigning a weight to individual children. This attribute assigns an "importance" value to a view, and allows it to expand to fill any remaining space in the parent view. Child views can specify an integer 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. For example, if there are three text boxes and two of them declare a weight of 1, while the other is given no weight (0), the third text box 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 boxes are measured. If the third box 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.


weight是一个权重值,表示重要程度。如果三个view横列,前两个view的wieght是1,第三个是默认值0。可见第三个view的权weight最低,那么第三个view就只会占用自己内容所需的宽度,剩下的宽度会被前两个view平分。

如果第三个view的wieght是2,那么前两个view就只占据自己内容所需的宽度,第三个会占据剩下所有空间。
5 楼 shaobin0604 2010-05-24  
Java豆儿 写道
我想改变 LinearLayout 的背景颜色或图片 通过代码怎么实现 请帮忙~~~~

background 属性
4 楼 Java豆儿 2010-03-08  
我想改变 LinearLayout 的背景颜色或图片 通过代码怎么实现 请帮忙~~~~
3 楼 litchi 2009-08-20  
大家能讨论以下为什么再LinearLayout之间是反比的形式显示在屏幕上的吗,我觉得不符合逻辑啊。

为什么不都是以正比的形式显示呢
2 楼 zhangcong170 2009-07-15  
我明白了  在一个LinearLayout内各个组件是按weight值以正比形式显示在屏幕上  而在LinearLayout之间以反比的形式显示在屏幕上  呵呵 
1 楼 rayleeya 2009-07-11  
我试过的是 空间按 weight 的比例的正比划分,不是反比。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <!-- view1 goes on top -->
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="1111111111111111"/>

    <!-- view2 goes in the middle -->
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="222222222222222"/>

    <!-- view3 goes on the bottom -->
    <TextView
        android:layout_weight="2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="333333333333333"/>

</LinearLayout>

相关推荐

    Android布局控件之linearlayout案例

    在Android开发中,LinearLayout是一种非常基础且常用的布局控件,它是Android SDK提供的布局管理器之一。本教程将深入探讨LinearLayout的使用,通过实际案例来帮助理解其工作原理和功能。 线性布局(LinearLayout)...

    Android布局之LinearLayout自定义高亮背景的方法

    在Android布局设计中,掌握各种布局管理器的用法和自定义技巧是非常重要的。例如,LinearLayout提供了权重分配功能,可以灵活调整子视图的大小;RelativeLayout则支持相对位置布局,适合复杂的界面设计;还有...

    Android布局之LinearLayout线性布局

    在Android开发中,LinearLayout是一种基本且常用的布局管理器,它允许开发者将子视图(views)按照垂直或水平的方向进行排列。线性布局的主要特点就是简单直观,它将子元素按照一条直线进行堆叠,可以是自上而下...

    Android源码LinearLayout实例

    总结来说,LinearLayout是Android布局系统中的重要组成部分,理解其源码对于提升Android开发技能至关重要。通过分析LinearLayout的测量和布局过程,我们可以优化性能,同时结合Dialog的使用,能够创建出丰富的交互...

    Android Flowlayout:LinearLayout内部控件自动换行

    LinearLayout是最常见的布局之一,它按照垂直或水平方向排列其子视图。然而,当需要在一个容器中动态地展示数量不定且可能超出一行的元素时,LinearLayout就显得有些局限。这时,`Android Flowlayout`应运而生。 ...

    Android中线性布局LinearLayout的特点.pdf

    总之,Android的线性布局LinearLayout是构建基本用户界面的重要工具,它的主要功能在于简单、直观地排列UI元素,同时提供了一定程度的自适应能力。开发者可以根据应用的需求,灵活运用LinearLayout的特性来创建各种...

    Android开发学习23】界面布局之线性布局LinearLayout代码

    在Android应用开发中,界面布局是构建用户交互界面的关键步骤,而LinearLayout作为最基础的布局之一,对于开发者来说至关重要。本篇文章将深入探讨线性布局(LinearLayout)的使用方法、特性以及如何通过代码实现。 ...

    android demo,LinearLayout的事件的的处理,LinearLayout的显示的隐藏。

    在Android开发中,LinearLayout是一种常用的布局管理器,用于线性排列子视图,可以是垂直或水平方向。这篇Demo主要探讨了LinearLayout中的事件处理以及如何实现显示与隐藏功能。我们来详细了解一下这些知识点。 ...

    android demo,自定义LinearLayout的实现。

    在Android开发中,自定义视图是提升应用性能和...通过学习和实践这个`android demo`,开发者不仅可以加深对Android布局系统的工作原理的理解,还能提高自定义视图的能力,为创建更加复杂和个性化的应用界面打下基础。

    android linearlayout源码

    首先,LinearLayout继承自ViewGroup,是Android布局系统中的一个关键组件。在`android.view.ViewGroup`类中,LinearLayout重写了多个方法来实现其特定的布局策略。这些方法包括`onMeasure()`、`onLayout()`以及`...

    Android布局类型:线性布局(LinearLayout)基本使用和常用使用案例,理论加案例

    Android常见的布局类型是线性布局(LinearLayout),包含布局方向设置、基本使用、常用使用案例以及实现均分案例(垂直均分、水平均分)、以及线性布局嵌套,实现垂直且水平居中,整体按照“理论+案例”,分析清晰,...

    Android自定义LinearLayout布局显示不完整的解决方法

    Android自定义LinearLayout布局显示不完整的解决方法 在 Android 开发中,自定义 LinearLayout 是一个常见的需求,但是有时候我们可能会遇到布局显示不完整的问题,本文将为大家介绍关于 Android 自定义 ...

    认识Android布局文件

    【Android布局文件详解】 在Android应用开发中,界面设计是一个至关重要的环节,而XML格式的布局文件正是构建这些界面的核心工具。布局文件定义了应用程序界面的结构,包括它所包含的控件、控件间的相对位置以及...

    Android LinearLayout

    在Android开发中,LinearLayout是一种基本且常用的布局管理器,它允许开发者按照水平或垂直方向排列子视图(Views)。在本教程中,我们将深入探讨如何使用Android Studio进行LinearLayout的实践操作,以及它在水平和...

    Android LinearLayout.LayoutParams 使用方法

    在Android开发中,LinearLayout是最基础且常用的布局管理器之一,它允许我们将子视图按照垂直或水平方向进行排列。LinearLayout.LayoutParams是LinearLayout特定的布局参数类,用于定义子视图的大小和位置。在这个...

    Android应用源码之10._LinearLayout学习.zip

    通过这个“Android应用源码之10._LinearLayout学习”的资料,开发者能够深入理解LinearLayout的工作机制,并将这些知识应用到实际的Android应用开发中,提升代码质量和用户体验。通过实践和研究源码,开发者可以不断...

    Android UI LinearLayout权限级别与TableLayout混合使用,

    首先,`LinearLayout`是Android中最基础的布局之一,它允许我们将视图组件沿着水平或垂直方向线性排列。通过设置`orientation`属性(默认为垂直),我们可以改变布局的方向。此外,`layout_weight`属性是`...

    Android 跑马灯,用LinearLayout加动画实现。

    LinearLayout是Android布局管理器之一,它允许你将子视图水平或垂直排列。在跑马灯效果中,LinearLayout将作为容器,包含我们需要滚动的TextViews。 2. **XML布局设计**: 在`res/layout`目录下创建一个新的布局...

    Android应用开发-LinearLayout布局.pptx

    `LinearLayout`是Android布局中的一种基本类型,它会按照设定的`orientation`属性将子视图(Views)按照垂直或水平方向排列。如果`orientation`设为`vertical`,则子视图会在屏幕垂直方向上依次排列;若设为`...

Global site tag (gtag.js) - Google Analytics