线性布局管理器会将容器中的组件一个一个排列, 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下载