fragment与viewPaper的使用

摘要:
为了实现滑动切换fragment,我们使用了viewpager去加载fragment,自然我们也要为定义viewpaper定义一个适配器,然后绑定这个适配器,其实类似listview的使用方法。另一个函数getItem()表示的返回当前fragment的位置,那么根据返回的位置,我们设置为对应的fragment,再返回即可。最后我们来看到MainActivity的实现:这一部分主要是初始化数据,主要看到的是下面这一段:接下来我们再看到4个button的点击事件:实际上是很简单,只要把对应的fragment的位置传入到viewPager中即可。

实现点击切换fragment和滑动切换fragment

  1. 效果图如下:

fragment与viewPaper的使用第1张fragment与viewPaper的使用第2张

实现过程—核心代码:

对底部栏实现按下时,能够改变背景颜色,文字颜色以及更改图标

fragment与viewPaper的使用第3张

以第一个提示的button为例子:

要注意的几点是:

(1) 通过drawbleTop属性,将图片放在button的上方,以便下方显示文字

(2) 我们先来看button的背景设置btn_tip_msg文件:

fragment与viewPaper的使用第4张

如上代码:我们可以看到首先是一个selector,表示为选择,然后第一个item,设置了state_pressed属性为false,即按钮未被按下时的状态,同样我们再设置state_pressed为true时的颜色,那么就可以控制button的背景颜色变化了。

(3) 紧接着是button中的图片的改变,设置文件如下:

fragment与viewPaper的使用第5张

也是很简单的的一个state_pressed属性来设置

(4) 最后,我们再来看button中文字颜色的改变:

fragment与viewPaper的使用第6张

从界面上,可以看出中间的那部分为我们要设置的fragment,那么我们要实现通过滑动来切换fragment,那么这时候中间的这部分要使用viewPaper的控件:

fragment与viewPaper的使用第7张

定义完一些主要,困难的布局后,我们现在开始开始实现java文件:

(1) 我们知道其实界面中是4个fragment在切换,所以我们先分别定义4个fragment布局文件和Java文件:

fragment与viewPaper的使用第8张fragment与viewPaper的使用第9张

(2)我们来看下其中的的一个fragment.java文件:

fragment与viewPaper的使用第10张

其实很简单,就是在onCreateView上定义一个view,然后让这个view去加载其对应的的布局文件,然后返回即可。

(3)为了实现滑动切换fragment,我们使用了viewpager去加载fragment,自然我们也要为定义viewpaper定义一个适配器,然后绑定这个适配器,其实类似listview的使用方法。那么官方提供了一个专门加载fragment的适配器FragmentPagerAdapter

我们来看下它具体是如何实现的:

fragment与viewPaper的使用第11张

fragment与viewPaper的使用第12张

我们分别定义了4个不同的fragment,并在类的构造函数里内初始化了,然后该类还包含了两个函数,一个是getCount(),表示fragment的个数,我们这里是4个,所以返回4个即可。另一个函数getItem()表示的返回当前fragment的位置,那么根据返回的位置,我们设置为对应的fragment,再返回即可。

(5)最后我们来看到MainActivity的实现:

fragment与viewPaper的使用第13张

这一部分主要是初始化数据,主要看到的是下面这一段:

fragment与viewPaper的使用第14张

接下来我们再看到4个button的点击事件:实际上是很简单,只要把对应的fragment的位置传入到viewPager中即可。

fragment与viewPaper的使用第15张

最后,我们来看到滑动的监听事件:实现起来也是很简单,跟上面的button点击事件一样,不过这里要值得注意的是state的含义。

fragment与viewPaper的使用第16张

至此,主要的问题就解决了。

免责声明:文章转载自《fragment与viewPaper的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SOA、REST 和六边形架构idea中web.xml报错 Servlet should have a mapping下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTML 表单常用的代码元素

表单: 将数据通过浏览器提交到服务器的媒介。<form action="" method="get/post" ></form> get 提交有长度限制 post 提交无长度限制 一般常用post  表单元素:12个 1.文本类1).<input type="text" value=""> - 文本框 在文本框中输入...

Unity 登录注册功能的实现(PlayerPrefs)

1、首先了解下 Unity 的 PlayerPrefs 存储 目前,在 Unity 中只支持 int、string、float 三种数据类型的读取,所以我们可以使用这三种数据类型来存储简单的数据 而其中用于数据持久化的类为 PlayerPrefs,如下: 数据保存 PlayerPrefs.SetString(“Name”,Key.value); Play...

JavaScript基础前二章

JavaScript能力和不及之处缺点1、JavaScript不能在Client的硬盘读出或写进档案(除了Cookies)2、JavaScript不能保密,可以看到原始码。3、没有server-side程序,不能在server开启档案或放下可记录的数据,唯一可与外界联络的方法是以Email的方式送出数据。 一句话,JavaScript是纯粹的浏览器软件。...

WPF知识点全攻略06- WPF逻辑树(Logical Tree)和可视树(Visual Tree)

介绍概念之前,先来分析一段代码: xaml代码如下: <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.micros...

android之手机震动Vibrate

[java] view plaincopy  package cn.com.chenzheng_java;      import android.app.Activity;   import android.media.AudioManager;   import android.os.Bundle;   import android.os.Vi...

Android学习之五:android一些基本控件

每一个GUI开发工具都会提供一些基本的控件,例如Label和Button 等,下面我们来看下Android的一些基本控件。 Label:就是只用来显示些文本信息,而且不需要编辑的控件,在Android中是使用TextView控件的。我们来看一下在xml文件下面怎么定义该控件,我们来看以下的xml代码: <TextView android:lay...