Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果
程序员文章站
2022-06-29 09:17:03
本文为大家分享了android studio实现滑动菜单tab效果的具体代码,供大家参考,具体内容如下
描述:
&nbs...
本文为大家分享了android studio实现滑动菜单tab效果的具体代码,供大家参考,具体内容如下
描述:
之前有做过一个记账本app,拿来练手的,做的很简单,是用eclipse开发的;
最近想把这个app重新完善一下,添加了一些新的功能,并选用android studio来开发;
app已经完善了一部分,现在就想把已经做好的功能整理一下,记录下来。
效果图:
可以手动滑动菜单
也可以通过点击头部菜单进行切换
具体实现的代码:
前台代码(activity_main.xml):
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <linearlayout android:layout_width="match_parent" android:layout_height="40dp" android:layout_margintop="1dp" android:background="@android:color/white" android:baselinealigned="false" android:gravity="center_vertical" android:orientation="horizontal" android:paddingbottom="5dp" android:paddingtop="5dp"> <!--detail tab--> <textview android:id="@+id/item_detail" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_horizontal|center_vertical" android:text="@string/detail_tab" android:textcolor="@color/main_tab_text_color" android:textsize="20dp"/> <!--category report tab--> <textview android:id="@+id/item_category_report" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_horizontal|center_vertical" android:text="@string/category_report_tab" android:textcolor="@color/main_tab_text_color" android:textsize="20dp"/> </linearlayout> <android.support.v4.view.viewpager android:id="@+id/mainviewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> </linearlayout>
主界面代码(mainactivity.java):
package com.hyl.acccountbookdemo; import android.graphics.color; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmentpageradapter; import android.support.v4.view.viewpager; import android.support.v7.app.appcompatactivity; import android.view.view; import android.widget.textview; import java.util.arraylist; import java.util.list; /** * @programname: mainactivity.java * @programfunction: recording of income and expenditure * @createdate: 2018/09/25 * @author: annehan * @version: * xx. yyyy/mm/dd ver author comments * 01. 2018/09/25 1.00 annehan new create */ public class mainactivity extends appcompatactivity implements view.onclicklistener { private textview item_detail, item_category_report; private viewpager vp; private onefragment onefragment; private twofragment twofragment; private list<fragment> mfragmentlist = new arraylist<fragment>(); private fragmentadapter mfragmentadapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); initviews(); mfragmentadapter = new fragmentadapter(this.getsupportfragmentmanager(), mfragmentlist); vp.setoffscreenpagelimit(2);//viewpager的缓存为2帧 vp.setadapter(mfragmentadapter); vp.setcurrentitem(0);//初始设置viewpager选中第一帧 item_detail.settextcolor(color.parsecolor("#1ba0e1")); //viewpager的监听事件 vp.setonpagechangelistener(new viewpager.onpagechangelistener() { @override public void onpagescrolled(int position, float positionoffset, int positionoffsetpixels) { } @override public void onpageselected(int position) { /*此方法在页面被选中时调用*/ changetextcolor(position); } @override public void onpagescrollstatechanged(int state) { /*此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。 arg0==1的时辰默示正在滑动, arg0==2的时辰默示滑动完毕了, arg0==0的时辰默示什么都没做。*/ } }); } /** * 初始化布局view */ private void initviews() { item_detail = (textview) findviewbyid(r.id.item_detail); item_category_report = (textview) findviewbyid(r.id.item_category_report); item_detail.setonclicklistener(this); item_category_report.setonclicklistener(this); vp = (viewpager) findviewbyid(r.id.mainviewpager); onefragment = new onefragment(); twofragment = new twofragment(); //给fragmentlist添加数据 mfragmentlist.add(onefragment); mfragmentlist.add(twofragment); } /** * 点击头部text 动态修改viewpager的内容 */ @override public void onclick(view v) { switch (v.getid()) { case r.id.item_detail: vp.setcurrentitem(0, true); break; case r.id.item_category_report: vp.setcurrentitem(1, true); break; } } public class fragmentadapter extends fragmentpageradapter { list<fragment> fragmentlist = new arraylist<fragment>(); public fragmentadapter(fragmentmanager fm, list<fragment> fragmentlist) { super(fm); this.fragmentlist = fragmentlist; } @override public fragment getitem(int position) { return fragmentlist.get(position); } @override public int getcount() { return fragmentlist.size(); } } /** * 由viewpager的滑动修改头部导航text的颜色 * @param position */ private void changetextcolor(int position) { if (position == 0) { item_detail.settextcolor(color.parsecolor("#1ba0e1")); item_category_report.settextcolor(color.parsecolor("#000000")); } else if (position == 1) { item_category_report.settextcolor(color.parsecolor("#1ba0e1")); item_detail.settextcolor(color.parsecolor("#000000")); } } }
需要多少个fragment,便创建多少个,这里只举例写一个,其它相同
建立fragment(fragment_one.xml):
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/detail_tab" android:textsize="25sp"/> </linearlayout>
fragment界面代码(onefragment.java):
package com.hyl.acccountbookdemo; import android.os.bundle; import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; /** * @programname: onefragment.java * @programfunction: * @createdate: 2018/09/25 * @author: annehan * @version: * xx. yyyy/mm/dd ver author comments * 01. 2018/09/25 1.00 annehan new create */ public class onefragment extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // inflate the layout for this fragment return inflater.inflate(r.layout.fragment_one, container, false); } }
strings.xml:
<string name="detail_tab">明细</string> <string name="category_report_tab">类别报表</string>
colors.xml:
<color name="main_tab_text_color">#000000</color>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Android开发之使用150行代码实现滑动返回效果
-
Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版
-
Android使用ViewPager实现图片滑动预览效果
-
详解Android使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayou实现手指滑动效果
-
Android如何使用ViewPager2实现页面滑动切换效果
-
Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果
-
Android studio实现菜单效果
-
android使用TabLayout+NestedScrollView 实现详情界面tab页 关联 上下滑动视图的效果
-
Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版
-
Android App中使用ViewPager+Fragment实现滑动切换效果