线性布局管理器会将容器中的组件一个一个排列,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
版权声明:本文为博主原创,未经本人允许,禁止转载!
我的果果超可爱 2021-3-21 17:00