fragment与viewPaper的使用

Posted xiaofeiyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fragment与viewPaper的使用相关的知识,希望对你有一定的参考价值。

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

  1. 效果图如下:

    

实现过程—核心代码:

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

 

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

要注意的几点是:

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

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

 

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

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

 

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

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

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

 

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

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

     

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

          

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

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

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

 

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

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

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

 

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

 

 

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

 

 

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

 

以上是关于fragment与viewPaper的使用的主要内容,如果未能解决你的问题,请参考以下文章

android - Fragment getView() 总是返回null

网易新闻client(高仿)

Android-Kotlin在Fragment获取View

Android强制Fragment重建View

Fragment与Activity交互

在 Android 中使用 Fragments 而不是 Views 有啥好处?