原创 LinerLayout:线性布局管理器

2021-3-18 18:14 110352 44 4 分类: 软件与OS 文集: android studio

线性布局管理器会将容器中的组件一个一个排列,LinerLayout可以通过android:orientation属性控制组件横向或者纵向排列。线性布局中的组件不会自动换行,当组件一个一个排到尽头之后,剩下的组件就不会显示出来了。

LinerLayout布局文件实例:

xml version="1.0" encoding="utf-8"?>
<LinearLayout                                            //设置布局管理器为LinerLayout                                    
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"                  //设置组件的宽度                                                          
    android:layout_height="match_parent"                 //设置组件的高度
    android:layout_gravity="center"                      //设置组件的位置
    android:layout_weight="1"                            //设置组件占容器的权重  

android:gravity="center"                             //设置组件中子元素的位置

    android:visibility="visible"                         //设置组件的可见性
    android:orientation="vertical">                      //设置组件的内容是横向还是竖向排列

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World1!" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World2!" />
LinearLayout>

程序中定义了3个文本显示控件,采用了vertical(垂直)布局,运行效果如下图所示:

在上述LinerLayout布局文件实例中可以清晰的看出,LinerLayout内部的子元素是按照线性布局的,也可以看出布局文件中包含了LinerLayout的一些属性:                                                    

android:layout_width 设置当前组件的宽度,match_parent表示充满整个父元素,若使用wrap_content则意味着组件有多大就多大

android:layout_height 设置当前组件的高度,match_parent表示充满整个父元素,若使用wrap_content则意味着组件有多大就多大

android:orientation 当设置成vertical时表示布局容器内的控件纵向排列一列,当设置成horizon时表示布局容器的所有控件横向排成一行。

android:layout_weight 为容器的控件设置权重,表示当所有控件全部排列完毕后被设置的组件占父容器剩余空白部分的比重。

android:layout_gravity 为容器内的控件设置该控件在父容器中的对齐方式。

android:layout_visibility 默认为visibility,表示显示,设置为invisibility不显示,但是还会占据位置,留一个空白区域,设置成gone表示真正的完全隐藏。

使用代码控制线性布局管理器

  Android中所有的组件都是android.view.View类的子类,LinearLayout类也不例外。对于这些android.view.View类的组件,除了使用配置文件的形式进行布局管理器的定义之外,还可以使用java代码来动态控制,android.widget.LinerLayout类的重要操作方法和常量如下图。

要使用程序控制Linerlayout布局管理器的操作,还需要对一些布局参数进行配置,这些参数都保存在ViewGroup.LayoutParams类中,线性布局的参数保存在ViewGroup.LayoutParams的子类LinearLayout.LayoutParams类中。LinearLayout.LayoutParams类的结构如下图。

LinearLayout.LayoutParams类提供了一个构造方法,具体如下:

       Public LinearLayout.LayoutParams(int width,int height)

  在创建布局参数时需要传递布局参数的宽度和高度,而这两个布局参数可以通过ViewGroup.LayoutParams类提供的FILL_PARENT(充满父元素)和WRAP_CONTENT(包裹自身内容)两个常量参数来控制,控制布局管理器的代码如下:

这个程序通过Java代码直接控制线性布局管理器和它的子元素,最终又通过addContentView方法使线性布局管理器在这个Activity中展示出来,效果如下图:

在上面的程序中使用了addContentView(View,LayoutParams)方法,这是Activity类向Activity中增加View的方法。setContentView(View)方法也是设置Activity View的方法。那么两个方法有什么区别呢?

两者的区别主要包括两点:

1、在此之前已添加的UI组件是否被移除。setContentView(View)会导致先前添加的被移除,即替换性的;而addContentView(View,LayoutParams)不会移除先前添加的UI组件,即累计性的。

2、是否控制布局参数。addContentView(View,LayoutParams)有两个参数,可以控制布局参数;setContentView(View)没有接收布局参数,默认使用MATCH_PARENT,不过setContentView(View)也有带两个参数的版本,可以控制布局参数,这里不再讲解。

android studio软件以及手机模拟器以及更多工程源代码,请前往微信公众号:大鸟科创空间,回复android studio下载

作者: 大鸟科创空间, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3949041.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

我的果果超可爱 2021-3-21 17:00

学习了
相关推荐阅读
大鸟科创空间 2022-02-14 17:42
生日快乐HTML浪漫网页制作源码
对象生日快到了,赶快下载去给ta一个惊喜吧。解压后里面有整个项目和使用说明。这个代码有背景音乐(可以自己更改),有自转相册(可以改成对象照片)如下是效果截图,用鼠标滑动界面会有爱心划过,下滑可以循环播...
大鸟科创空间 2022-01-18 18:06
Android之WebView用法
除了HTTP通信与 Socket 通信两种主要的网络技术外,在 Android 中还提供了一种加载和显示网页的技术—WebView。这可以让我们去处理一些特殊的需求,比如像微信那样在应用程序里展示网页...
大鸟科创空间 2022-01-07 14:18
Android之Socket实例
    Socket(套接字)是对 TCP/IP 协议的封装和应用,根据底层封装协议的不同,Socket 的类型可以分为流套接字(streamsocket)和数据报套接字(data...
大鸟科创空间 2021-12-24 14:38
Android之本地广播的使用
前面我们发送和接收的广播全部属于系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且我们也可以接收来自于其他任何应用程序的广播。这样就很容易会引起安全性的问题,比如说我们发送的一些携带关键性数...
大鸟科创空间 2021-12-15 12:50
自定义广播实例
我们应该已经学会了通过广播接收者来接收系统广播的内容,但是在实际开发中,仍需要自定义一些广播。下面我们就来讲解如何在应用程序中发送自定义的广播。发送广播很简单,只需要声明一个意图,然后使用Contex...
大鸟科创空间 2021-12-07 13:04
Android之动态注册广播实例
Android内置了很多系统级别的广播,我们可以在应用序中通过监听这些广播来得到各种系统的状态信息,比如手机开机完成后会发出一条广播、电池的电最发生变化会发出一条广播、时间或时区发生改变也会发出一条广...
我要评论
1
44
关闭 站长推荐上一条 /2 下一条