Android笔记(六) Android中的布局——线性布局

我们的软件是由好多个界面组成的,而每个界面又由N多个控件组成,Android中借助布局来让各个空间有条不紊的摆放在界面上。

可以把布局看作是一个可以放置很多控件的容器,它可以按照一定的规律调整控件的位置,从而实现精美的界面。

布局中也可以放置布局,通过多层布局的嵌套,实现比较复杂的界面。

Android提供了四种基本布局:LinearLayout、RelativeLayout、FrameLayout、TableLayout

LinearLayout:

LinearLayout称为线性布局,正如其名字一样,这个布局中的所有控件在线性方向上依次排列。

LinearLayout通过orientation属性来指定排列方向是垂直还是水平,如果值为vertical,控件为垂直排列,如果值为horizantal,控件为水平排列

代码:

activity_main.xml:

<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"
    tools:context=".MainActivity"
    android:orientation="vertical"

    >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BUTTON1"
        android:id="@+id/button1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BUTTON2"
        android:id="@+id/button2"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="BUTTON3"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="BUTTON4"/>

    </LinearLayout>

</LinearLayout>

  以上代码在模拟器中显示为

  

  

从上面的代码我们可以看出,线性布局中,android:orientation属性控制了内部控件的布局方向,vertical为垂直布局,horizontal为水平布局,Android系统默认线性布局为水平方向(horizaontal)。

线性布局中还有一个属性android:gravity来控制布局内子元素的重力方向,它有以下多个参数可供选择:

center、  bottom、center_horizontal、center_vertital、clip_horizontal、clip_vertital、         end、fill、       fill_horizontal、fill_vertital、   left、right、start、top。

LinearLayout还有另外一个重要的属性——android:layout_weight,这个属性可以让我们使用比例的方式来指定控件的大小,在手机屏幕适配型方面可以起到非常重要的作用。

    代码示例:

    activity_main.xml:

<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"
    tools:context=".MainActivity"
    android:orientation="horizontal"
    >

    <EditText
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/usernameInput"
        android:text="请输入你的用户名"
        android:layout_weight="7"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/loginButton"
        android:text="登录"
        android:layout_weight="3"/>
</LinearLayout>

  运行结果为:

  

  EditText占屏幕的7/10  Button占屏幕的3/10.原理很简单,先将两个控件所占比例相加为屏幕总比例,然后用各自所占比例相除

  

时间: 2024-09-30 06:33:49

Android笔记(六) Android中的布局——线性布局的相关文章

Android笔记:java 中的数组

在与嵌入式设备通讯的过程中使用的socket通讯 获取的字节流,通常转换为字节数组,需要根据协议将字节数组拆分.对于有规律的重复拆分可以使用,由于java中不能像c中直接进行内存操作例如使用struct 内存拷贝可以直接实现,这里考虑的是借用数组拷贝的方式来实现. java数组复制参考 引自百度空间 同时参考 数组拷贝之java.lang.System.arraycopy和java.util.Arrays.copyOf方法 java数组复制的4种方式,java数组拷贝问题 JAVA数组的复制是引

Android笔记(六十三) android中的动画——逐帧动画( frame-by-frame animation)

就好像演电影一样,播放实现准备好的图片,来实现动画效果. 逐帧动画需要用到AnimationDrawable类,该类主要用于创建一个逐帧动画,然后我们把这个动画设置为view的背景即可. android提供两种方法为AnimationDrawable添加帧:XML定义和JAVA代码创建. XML 因为动画帧的资源需要是一个Drawable对象,所以需要把它放到Drawable目录下.在<animation-list>使用<item>来添加一帧 anima.xml <?xml

Android笔记(六十六) android中的动画——XML文件定义属性动画

除了直接在java代码中定义动画之外,还可以使用xml文件定义动画,以便重用. 如果想要使用XML来编写动画,首先要在res目录下面新建一个animator文件夹,所有属性动画的XML文件都应该存放在这个文件夹当中.然后在XML文件中我们一共可以使用如下三种标签: <animator>  对应代码中的ValueAnimator <objectAnimator>  对应代码中的ObjectAnimator <set>  对应代码中的AnimatorSet 使用XML设置动

Android笔记(六十七) 自定义控件

实际编程中,系统提供的控件往往无法满足我们的需求,一来是样子丑陋,二来是一些复杂的组合需要多次使用的话,每次都写一堆控件的组合会很耗费时间,所以我们将这些组件的组合自定义为一个新的控件,以后使用的时候直接用该控件,方便又简单.最常见的例子就是软件中的titleTar 实现自定义控件的步骤: 1.设置控件的属性 2.实现我们的View 3.引用我们自定的View 官方文档:http://developer.android.com/training/custom-views/create-view.

Android笔记(六十八) Fragment总结

Fragment的产生: 为了适应各种尺寸的屏幕,谷歌推出Fragment,可以把Fragment成Activity的一个组成部分,它拥有自己的生命周期.可以接收并处理用户的各种事件,还可以动态的增删改某个Fragment Fragment的使用 可以把Fragment当成普通的控件使用,直接写在布局文件中,然后新建一个继承自Fragment的类加载这个布局,然后在Activity的布局文件中直接引用这个Fragment,就是这么简单: MainActivity.java package com

【Android笔记】Fragment中显示高德地图

本文来自:fair-jm.iteye.com 转截请注明出处 官网的教程是在Activity下 在Fragment下在高德论坛找到一些方法 试了下可以显示 但是切换后总会有些问题 比如切换后就是新的了 切换后地图就不显示了 我这种方式可以在切换后保持地图状态 但是得限定屏幕为水平或者竖直 如果翻转的话也会报错 布局文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns

Android笔记六.深入理解Intent和IntentFilter(二)

深入理解Intent和IntentFiler(二) Jiangdg_VIP http://blog.csdn.net/u012637501 在上一篇文章中,我们比较详细学习了"Intent"的相关知识,现在将学习如何设置Intent对象的这些属性以及如何使用他们来启动组件.Intent对象是一组信息,我们可以通过设置其Action.Data.Category属性来指定启动哪个组件并完成什么样的动作(包含动作所需的数据). "意图"分为显示intent和隐式inten

Android基础:代码中实现界面动态布局

<RelativeLayout 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" > <TextView

Android笔记(六十二)网络框架volley

什么是Volley 很多时候,我们的APP都需要用到网络技术,使用HTTP协议来发送接收数据,谷歌推出了一个网络框架——volley,该框架适合进行数据量不大,但通信频繁的网络操作. 它的优点: (1)默认Android2.3及以上基于HttpURLConnection,2.3以下使用基于HttpClient: (2)符合Http 缓存语义 的缓存机制(提供了默认的磁盘和内存等缓存): (3)请求队列的优先级排序: (4)提供多样的取消机制: (5)提供简便的图片加载工具(其实图片的加载才是我们