目录
前言
本文旨在记录在Android Studio学习中关于Fragment的部分学习过程
提示:以下是本篇文章正文内容
一、Fragment简介
Fragment 表示应用界面中可重复使用的一部分。Fragment 定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。Fragment 不能独立存在,而是必须由 Activity 或另一个 Fragment 托管。Fragment 的视图层次结构会成为宿主的视图层次结构的一部分,或附加到宿主的视图层次结构。
Fragment 允许您将界面划分为离散的区块,从而将模块化和可重用性引入 Activity 的界面。Activity 是围绕应用的界面放置全局元素(如抽屉式导航栏)的理想位置。相反,Fragment 更适合定义和管理单个屏幕或部分屏幕的界面。
假设有一个响应各种屏幕尺寸的应用。在较大的屏幕上,该应用应显示一个静态抽屉式导航栏和一个采用网格布局的列表。在较小的屏幕上,该应用应显示一个底部导航栏和一个采用线性布局的列表。在 Activity 中管理所有这些变化因素可能会很麻烦。将导航元素与内容分离可使此过程更易于管理。然后,Activity 负责显示正确的导航界面,而 Fragment 采用适当的布局显示列表。
二、Fragment的基础使用
1.创建Fragment
1.在新建的工程中新建空活动。
2.在空活动中新建BlankFragment。
3.为了便于操作,将约束布局改为线性布局。
不改应该也是完全没有问题的,在我的学习过程中所查到的资料中大多数老师推荐这里改为线性布局,所以我这里改为了线性布局
2.在Activity中加入Fragment
由于Fragment作为Activity一部分,所以Fragment的使用一般是添加到Activity中。
将Fragment添加到Activity中一般有2种方法:
(1)在Activity的layout.xml布局文件中静态添加
以标签的形式添加到Activity的布局当中。
(2)在Activity的.java文件中动态添加
通过java代码将fragment添加到已存在的宿主Activity中。
三、Fragment的基础实践应用
下面我将以模拟微信页面切换为例展示Fragment的基础实践应用
1.应用过程详解
(1)在MainActivity布局文件activity_main.xml
中将布局修改为线性垂直分布后布置两个线性布局用作主要界面。
(2)在下方的小线性布局中布置三个居中的文本用作页面转换的按钮。
(3)对应三个按钮创建三个fragment用作等下切换的页面。
(4)为刚刚的三个文本创建点击事件并命名。
(5)为将被切换的主界面命名并设置水平排列。
(6)编写点击事件方法并创造三个替换页面。
(7)将三个替换页面的文本设为不同文字,便于切换时区分。
2.代码总览
MainActivity布局文件activity_main.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<LinearLayout android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="8"
android:id="@+id/yuan"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout android:layout_height="0dp"
android:layout_width="match_parent"
android:layout_weight="2">
<TextView
android:id="@+id/tv1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30dp"
android:gravity="center"
android:onClick="lc"
android:text="微信" />
<TextView
android:id="@+id/tv2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30dp"
android:gravity="center"
android:onClick="lc"
android:text="通讯录" />
<TextView
android:id="@+id/tv3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android