網站首頁 編程語言 正文
1.Fragment的介紹
Android在3.0版本引入了Fragment功能,它非常類似于Activity,可以像Activity一樣包含布局。
它出現的初衷是為了適應大屏幕的平板電腦,使用Fragment我們可以把屏幕劃分成幾塊,合理利用屏幕空間。
Fragment通常是嵌套在Activity中使用。
2.靜態加載
步驟:
(1)定義Fragment控件的布局文件。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".LeftFragment"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="這是左邊" /> </FrameLayout>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".RightFragment"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="這是右邊" /> </FrameLayout>
(2)自定義Fragment類,繼承自Fragment類或者子類,同時實現onCreateView()方法,在方法中,通過inflater.inflate加載布局文件,接著返回其View。
class LeftFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_left, container, false)
}
}
class RightFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_right, container, false)
}
}
(3)在需要加載Fragment控件的Activity對應的布局文件中添加Fragment標簽,并設置name屬性為自定義fragment。
<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:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <fragment android:id="@+id/leftFrag" android:name="com.hui.fragment.LeftFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"/> <fragment android:id="@+id/rightFrag" android:name="com.hui.fragment.RightFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"/> </LinearLayout>
(4)最后在Activity的onCreate()方法中調用setContentView()加載布局。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
3.動態加載
步驟:
(1)通過getSupportFragmentManager()方法獲得FragmentManager對象。
val fragmentManager=supportFragmentManager
(2)開啟事務,通過beginTransaction()方法獲得FragmentTransaction對象。
val transaction=fragmentManager.beginTransaction()
(3)調用add()方法或者repalce()方法加載Fragment。
transaction.replace(R.id.rightLayout,fragment)
//replace()方法需要傳入容器的id和待添加的Fragment實例
(4)最后調用commit()方法提交事務。
transaction.commit()
原文鏈接:https://blog.csdn.net/weixin_63357306/article/details/128062466
相關推薦
- 2022-11-23 Pandas?DataFrame操作數據增刪查改_python
- 2022-12-21 C語言中continue的用法詳解_C 語言
- 2022-09-26 符合選擇器和css三大特性組合
- 2022-11-09 css實現div盒子旋轉
- 2022-11-26 .Net中Task?Parallel?Library的進階用法_實用技巧
- 2022-03-14 跨域問題Response to preflight request doesn't pass acc
- 2022-11-09 GO?語言運行環境的基礎知識_Golang
- 2023-07-09 Python Django 零基礎從零到一部署服務,Hello Django!全文件夾目錄和核心代碼
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支