灵活使用Android中ActionBar和ViewPager切换页面
程序员文章站
2024-02-11 21:37:46
本文实例讲述了android使用actionbar和viewpager切换页面,分享给大家供大家参考。具体如下:
运行效果截图如下:
项目布局如下:
具体代码...
本文实例讲述了android使用actionbar和viewpager切换页面,分享给大家供大家参考。具体如下:
运行效果截图如下:
项目布局如下:
具体代码如下:
mainactivity.java代码
import java.util.arraylist; import java.util.list; 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.app.fragmenttransaction; import android.support.v4.view.viewpager; import android.support.v4.view.viewpager.onpagechangelistener; import android.support.v7.app.actionbar; import android.support.v7.app.actionbar.tab; import android.support.v7.app.actionbar.tablistener; import android.support.v7.app.actionbaractivity; import com.xuliugen.fragment.chatfragment; import com.xuliugen.fragment.friendfragment; import com.xuliugen.fragment.momentfragment; import com.xuliugen.fragment.morefragment; public class mainactivity extends actionbaractivity implements tablistener,onpagechangelistener { private list<mytab> tabslist = new arraylist<mainactivity.mytab>(4); private viewpager viewpager;// viewpager用于存放fragment private actionbar actionbar; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // 添加4个fragment到自定义的tab中去 tabslist.add(new mytab("聊天", chatfragment.class)); tabslist.add(new mytab("朋友", friendfragment.class)); tabslist.add(new mytab("时刻", momentfragment.class)); tabslist.add(new mytab("更多", morefragment.class)); initactionbar(); } private void initactionbar() { // 找到viewpager viewpager = (viewpager) this.findviewbyid(r.id.viewpager); actionbar = getsupportactionbar(); // 获得v7中的actionbar actionbar.setnavigationmode(actionbar.navigation_mode_tabs);// 设置为导航模式 // 通过循环遍历将创建的四个tab加入到actionbar中 for (mytab tab : tabslist) { tab t = actionbar.newtab(); // 使用v7下边的tab t.settext(tab.gettext()); t.settablistener(this);// 设置tablistener监听器 actionbar.addtab(t); } viewpager.setadapter(new tabfragmentpageradapter(getsupportfragmentmanager())); viewpager.setonpagechangelistener(this); } /** * 封装一个tab的类 * * tab的文字 * * tab所包含的class */ class mytab { private string text; // 标题的文字 private class fragment;// 每一个tab所对应的页面fragment public string gettext() { return text; } public void settext(string text) { this.text = text; } public class getfragment() { return fragment; } public void setfragment(class fragment) { this.fragment = fragment; } /** * 两个参数的构造方法,便于创建一个对象 * * @param string * @param fragment */ public mytab(string string, class fragment) { this.text = string; this.fragment = fragment; } } /** * 为viewpager设置的适配器 */ class tabfragmentpageradapter extends fragmentpageradapter { public tabfragmentpageradapter(fragmentmanager fm) { super(fm); } @override public fragment getitem(int i) { try { return (fragment) tabslist.get(i).getfragment().newinstance(); } catch (instantiationexception e) { e.printstacktrace(); } catch (illegalaccessexception e) { e.printstacktrace(); } return null; } @override public int getcount() { return tabslist.size(); } } /************* 下边是tablistener所实现的方法 ***********************/ /** * 当tab被双次选中 */ @override public void ontabreselected(tab tab, fragmenttransaction fragmenttransaction) { } /** * 当tab被单次选中 */ @override public void ontabselected(tab tab, fragmenttransaction fragmenttransaction) { viewpager.setcurrentitem(tab.getposition()); } @override public void ontabunselected(tab tab, fragmenttransaction fragmenttransaction) { } /**************** 下边是onpagechangelistener实现的方法 ****************/ @override public void onpagescrollstatechanged(int i) { } @override public void onpagescrolled(int i, float arg1, int arg2) { } @override public void onpageselected(int i) { actionbar.selecttab(actionbar.gettabat(i)); } }
下边是四个fragment
public class chatfragment extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { return inflater.inflate(r.layout.fragment_friends, container, false); } } public class friendfragment extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { return inflater.inflate(r.layout.fragment_chat, container, false); } } public class momentfragment extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { return inflater.inflate(r.layout.fragment_moment, container, false); } } public class morefragment extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { return inflater.inflate(r.layout.fragment_more, container, false); } }
activity_main.xml
<relativelayout 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" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".mainactivity" > <android.support.v4.view.viewpager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" > </android.support.v4.view.viewpager> </relativelayout>
下边是四个fragment的布局文件
<?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="fill_parent" android:orientation="vertical" > <textview android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="聊天" > </textview> </linearlayout>
其他三个都一样只是文件名和里边的内容改变了一下。
希望本文所述对大家学习android软件编程有所帮助。
推荐阅读
-
灵活使用Android中ActionBar和ViewPager切换页面
-
灵活使用Android中ActionBar和ViewPager切换页面
-
Android如何使用ViewPager2实现页面滑动切换效果
-
Android中TabLayout+ViewPager实现tab和页面联动效果
-
Android使用TabLayou+fragment+viewpager实现滑动切换页面效果
-
Android中应用界面主题Theme使用方法和页面定时跳转应用
-
Android使用TabLayou+fragment+viewpager实现滑动切换页面效果
-
Android中TabLayout+ViewPager实现tab和页面联动效果
-
Android中应用界面主题Theme使用方法和页面定时跳转应用
-
Android如何使用ViewPager2实现页面滑动切换效果