activity中获取fragment布局_安卓开发入门教程Fragment
什么是Fragment
Activity是整个看到的界面,而Activity则可以继续分割出多个Fragment. Fragment最初是为了在平板电脑充分利用空间,但是手机端也经常使用,主要目的是共用屏幕上某一块区域.
如下面一种界面,上面蓝色框是几个功能(推荐、应用、游戏等)共用的显示区域,当用户切换到不同的功能页时,就将共用显示区域内容替换为对应的功能Fragment.
使用单个Fragment样例
效果图:
手动创建Fragment
在工程目录中单击右键,选择“New>Fragment>Fragment(Blank)”
在窗口中设置Fragment名称,对应布局文件名称.
默认创建的Fragment有点复杂,简化后如下:
class BlankFragment : Fragment() {override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {return inflater.inflate(R.layout.fragment_blank, container, false)}}
在Activity对应布局文件中增加用于容纳Fragment布局容器
修改activity_main.xml,添加一个FrameLayout,命名为containerLayout.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">
<FrameLayoutandroid:id="@+id/containerLayout"android:layout_width="match_parent"android:layout_height="match_parent" />
LinearLayout>
在Activity中加载该Fragment
下面演示点击button1按钮时,从MainActivity跳转到Main2Activity
replaceFragment(BlankFragment(), R.id.containerLayout)
完整代码如下:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)replaceFragment(BlankFragment(), R.id.containerLayout)}
private fun replaceFragment(fragment: Fragment, containerId: Int) = supportFragmentManager.beginTransaction().replace(containerId, fragment).commit()}
使用多个Fragment样例
多个Fragment利用同一块区域进行内容展示,一般可以通过标签页进行切换.
效果图
加载第一个Fragment
加载第二个Fragment
创建第一个Fragment及对应布局文件
第一个Fragment
class FirstFragment : Fragment() {override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {return inflater.inflate(R.layout.fragment_first, container, false)}}
第一个Fragment对应布局:fragment_first.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">
<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="第一个Fragment" />
</FrameLayout>
创建第二个Fragment及对应布局文件
第二个Fragment
class SecondFragment : Fragment() {override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {return inflater.inflate(R.layout.fragment_second, container, false)}}
第二个Fragment对应布局:fragment_second.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">
<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="第二个Fragment" />
</FrameLayout>
修改Activity对应的布局文件,展示两个底部标签.
下面代码中id为bottomLayout的布局,里面放了两个标签,用来点击切换页面上部containerLayout中的内容.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">
<FrameLayoutandroid:id="@+id/containerLayout"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@+id/bottomLayout" />
<LinearLayoutandroid:id="@+id/bottomLayout"android:layout_width="match_parent"android:layout_height="50dp"android:layout_alignParentBottom="true"android:background="#F8F8F8">
<TextViewandroid:id="@+id/page1Tv"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:text="标签页1" />
<Viewandroid:layout_width="1px"android:layout_height="match_parent"android:background="#E7E7E7" />
<TextViewandroid:id="@+id/page2Tv"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:text="标签页2" />LinearLayout>RelativeLayout>
Activity代码中做Fragment加载及切换
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)//默认加载第一个FragmentreplaceFragment(FirstFragment(), R.id.containerLayout)//对page1Tv控件添加点击事件,点击后切换至FirstFragment page1Tv.setOnClickListener { replaceFragment(FirstFragment(), R.id.containerLayout) }//对page2Tv控件添加点击事件,点击后切换至SecondFragment page2Tv.setOnClickListener { replaceFragment(SecondFragment(), R.id.containerLayout) }}
private fun replaceFragment(fragment: Fragment, containerId: Int) = supportFragmentManager.beginTransaction().replace(containerId, fragment).commit()}
完整源代码
https://gitee.com/cxyzy1/fragmentDemo
activity中获取fragment布局_安卓开发入门教程Fragment相关推荐
- 安卓开发入门教程-Fragment
什么是Fragment Activity是整个看到的界面,而Activity则可以继续分割出多个Fragment. Fragment最初是为了在平板电脑充分利用空间,但是手机端也经常使用,主要目的是共 ...
- android 获取控件高度_安卓开发入门教程UI控件_ProgressBar
什么是ProgressBar ProgressBar是用于提示用户进行等待的UI控件,. 基础样例 1.loading图 效果图 代码 布局文件代码 <ProgressBarandroid:id ...
- android 获取控件高度_安卓开发入门教程UI控件_ImageView
什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...
- 安卓开发入门教程-UI控件_EditText
什么是EditText EditText是用于进行文本输入的UI控件. 基础样例 1.普通输入 效果图 代码 <EditTextandroid:layout_width="wrap_c ...
- 安卓开发入门教程!终于有人把安卓程序员必学知识点全整理出来了,附答案
如何提升学习? 提升学习很大程度上就是为了跳槽涨薪,当然运气不好的情况可能是被劝退重新找工作,无论是哪种情况,自主学习的能力是要有的,而且得有一个方向,得有重点. 对于Android移动开发来说,热修 ...
- 安卓开发入门教程-安装开发工具(Android Studio)
本文简介 搭建Android Studio安卓开发环境. 目标用户 安卓初学者 操作步骤 一.下载Android Studio 下载迅雷加速下载(网速快的,直接略过本步骤).预计耗时:1分钟 在浏览器 ...
- css中的单位换算_金蝶ERP入门教程:动态换算率及辅助计量单位的应用
金蝶ERP入门教程:动态换算率及辅助计量单位的应用 关注我,我将定期分享更多的ERP解决方案 如果您喜欢且觉得内容有用,请点击分享转发 如果你有什么关于ERP系统的问题和疑问,可私信联系我 大家好,我 ...
- 安卓开发入门教程!安卓Apk安装过程,源码+原理+手写框架
首先,讲讲为什么我们要讲JAVA的语言进阶,从整体来讲,Java和Android的区别在于Android程序是基于组件和配置的,而且Android开发以Java语言为开发工具,表面上看他们有点同宗不同 ...
- 安卓开发入门教程-通过WebView打开网页
什么是WebView WebView是用来打开网页的一种UI控件,可以在App内跳转到指定网址,而不是采用系统浏览器打开网页. 基础样例 效果图 实现方案 activity class MainAct ...
最新文章
- cass插件_南方CASS专题系列,全套教程+视频讲解+插件汇总,全部打包速带走
- 满洲里市智慧教育建设跨入云时代
- 关于Installshield里一些常见问题的解答—艾泽拉斯之海洋女神出品
- mysql中文时好时坏_mysql索引的问题,时好时坏
- Nginx静态资源盗链的效果展示
- JQuery之编写弹窗
- html页面音乐播放器_Embed代码
- 和氟西汀类似的备注_撒狗粮:可爱又霸气的给男朋友的微信备注
- 64位处理器_快看看你的电脑是64位还是32位操作系统,处理器支持64位可升级
- 动态语言会淘汰静态语言吗?
- python中superclass是什么_Python中super()函数简介及用法分享
- 计算机软件领域经典图书推荐
- Rational Rose工具栏中没有参与者工具(小人图标)的解决方法
- 怎么把淘宝宝贝分享到微信朋友圈
- Java课程设计学生考勤管理
- 《Web全栈工程师的自我修养》读后感
- 如何将局域网IP映射为公网IP
- photoshop颈纹去除
- 微信公众平台开发__导航
- linux下安装nginx出错,Ubuntu安装Nginx服务器出错解决