LinearLayout
LinearLayout是最常用的布局容器之一,是一个简单的线性布局类,将子视图(widgets)以水平或垂直的方式排列。LinearLayout提供了两个主要的属性来定义子视图的排列方式:orientation和gravity。
orientation 属性定义了子视图在LinearLayout中的排列方向。有两个可能的值:
- horizontal:子视图水平排列。
- vertical:子视图垂直排列。
gravity属性定义了子视图在LinearLayout中的对齐方式。例如,有一个水平排列的LinearLayout,使用gravity属性来定义子视图是居左、居右还是居中对齐。
layout_weight属性用于控制子视图在剩余空间中的分配方式。例如,有两个子视图layout_weight都设置为 1,将平分LinearLayout中的剩余空间。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- 垂直排列的子视图 -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮 1" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<!-- 水平排列的子视图 -->
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="文本" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="按钮 2" />
</LinearLayout>
</LinearLayout>
LinearLayoutCompat
LinearLayoutCompat是LinearLayout线性布局的一个兼容类。主要目的是为了实现与LinearLayout类似的功能,同时提供更好的版本兼容性。
优点包括:
- 「向后兼容性」:LinearLayoutCompat能提供与较新版本Android上LinearLayout类似的行为和外观。
- 「样式和主题」:LinearLayoutCompat支持使用AppCompat主题,使用现代的设计元素,如深色主题、彩色控件等,而无需担心在旧版本Android上的显示效果。
- 「Material Design支持」:通过AppCompat 库,LinearLayoutCompat可以更容易地集成Material Design元素和组件,为用户提供更加现代和一致的体验。
LinearLayoutCompat支持与LinearLayout相同的属性,如orientation、background、layout_margin、padding、gravity 和 layout_weight 等。LinearLayoutCompat还引入了一些额外的属性,如app:divider和app:dividerPadding,用于在子元素之间设置间隔线(分割线)以及调整间隔线与子元素之间的间距。
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
}
<androidx.appcompat.widget.LinearLayoutCompat
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:showDividers="beginning|middle|end"
app:divider="@drawable/line"
android:padding="16dp">
<!-- 垂直排列的子视图 -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="这是一个文本视图"
android:textSize="18sp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击我" />
</androidx.appcompat.widget.LinearLayoutCompat>
LinearLayoutCompat 是为了兼容低版本而设计的,因此在较新版本的Android设备上,使用LinearLayout通常就足够了。如果需要确保应用在不同版本的Android设备上都能正常运行并保持一致的外观和行为,使用LinearLayoutCompat可能是一个更好的选择。