一、线性布局的设置
在xml文件中,如果想使用线性布局,需要使用LinearLayout属性,在该属性下的组件会按照线性布局的方式进行排列。
既然说到了线性布局,那么一定会有水平线性布局和垂直线性布局两种概念:
1、水平线性布局:使用android:orientation属性里的horizontal关键字进行设置,代表该布局下的组件是以水平布局的方式来设置的。
2、垂直线性布局:使用android:orientation属性里的vertical关键字进行设置,代表该布局下的组件是以水平布局的方式来设置的。
关于布局的大小设置:采用android:layout_width、android:layout_height两种属性去设置宽高,具体的属性值在往期相关的设置中有介绍(如果有没找到的小伙伴,或者我忘写了,大家可以给我留言,我看见会回复,这里不做过多赘述)。
关于布局的背景颜色设计:采用android:background属性,具体的属性值见往期内容(原因同上)。
二、设计案例
1、Java代码部分
public class LinearLayoutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_linear_layout);
}
}
这是界面启动的代码,不做过多解释。
2、xml代码部分
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#ff0000"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="横排第一个"
android:textSize="25sp"
android:gravity="center"
android:textColor="@color/black"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="横排第二个"
android:textSize="25sp"
android:gravity="center"
android:textColor="@color/black"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00ffff"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:text="竖排第一个"
android:textSize="25sp"
android:layout_gravity="center"
android:textColor="@color/black"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:text="竖排第二个"
android:textSize="25sp"
android:layout_gravity="center"
android:textColor="@color/black"/>
</LinearLayout>
</LinearLayout>
这里值得解释的一点是当需要使用线性布局嵌套时,一定要分清他们的作用范围,上述代码最外层为一个线性布局,作用范围为整个屏幕,并且设置为垂直布局,这也就意味着,在这个布局里写的任意组件最终都会以从上到下垂直的方式进行呈现的(这里也包括内部包含的布局),然后内部又创建了两个线性布局,代表这两个布局是垂直排列的,但是这两个内部的布局分别设置的是水平和垂直的,也就是说两个内部布局里的任意组件,都会以水平和垂直的方式展示,这也就是为什么,下面的效果图会呈现这样的形式,关于TextView组件里的内容,往期有讲过,不做过多的赘述,这里我特别提到一点,就是android:gravity和android:layout_gravity属性,细心的朋友可能已经发现了我在水平和垂直状态下,使文字居中,采用的属性有所不同。
使用方式:
- 在垂直布局下,想要文字能够显示居中效果,使用android:layout_gravity,将属性值设置为center,就可以保证文字居中。
- 在水平布局下,想要文字能够显示居中效果,使用android:gravity,将属性值设置为center,就可以保证文字居中。
- 其本质就是android:layout_gravity是相对于上级视图的位置设置,gravity是相对于下级视图的位置设置,具体解释见往期文章,有详细解释。