Several methods of Android tab navigation: ActionBar tab +FRAGMENT,VIEWPAGER+PAGERTITLESTRIP, open source framework Viewpageindicator and Viewpager

Source: Internet
Author: User
Tags event listener

Action to implement tab tags and to combine with fragment because to write news client this tab navigation is necessary here I write a few small exercises, I hope you can digest.

1actionbar setting tab +fragment

Layouts are a layout what layout can add an ID called container

 PackageCom.example.demoforactionbar;ImportAndroid.app.ActionBar;Importandroid.app.Activity;Importandroid.app.Fragment;Importandroid.app.FragmentTransaction;ImportAndroid.os.Bundle;ImportAndroid.view.Menu;ImportAndroid.view.MenuItem; Public classMainactivityextendsActivityImplementsactionbar.tablistener{Private Static FinalString Selected_item = "Selected_item"; @Override Public voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate);        Setcontentview (R.layout.activity_main); FinalActionBar ActionBar =Getactionbar (); //to set Actionbar Navigation: Tab NavigationActionbar.setnavigationmode (Actionbar.navigation_mode_tabs); //add three tab pages, and add an event listener for three tab labelsActionbar.addtab (Actionbar.newtab (). SetText ("first page"). Settablistener ( This)); Actionbar.addtab (Actionbar.newtab (). SetText ("Second Page"). Settablistener ( This)); Actionbar.addtab (Actionbar.newtab (). SetText ("Third page"). Settablistener ( This)); } @Override Public voidonrestoreinstancestate (Bundle savedinstancestate) {if(Savedinstancestate.containskey (Selected_item)) {//Select the Fragment page for the previously saved indexGetactionbar (). Setselectednavigationitem (Savedinstancestate.getint (Selected_item)); }} @Override Public voidonsaveinstancestate (Bundle outstate) {//saves the index of the currently selected fragment page to the bundleOutstate.putint (Selected_item, Getactionbar (). Getselectednavigationindex ()); } @Override Public voidontabunselected (Actionbar.tab Tab, Fragmenttransaction fragmenttransaction) {}//fires this method when the specified tab is selected@Override Public voidontabselected (Actionbar.tab Tab, fragmenttransaction fragmenttransaction) {//to create a new fragment objectFragment Fragment =Newdummyfragment (); //creates a bundle object for passing parameters to the fragmentBundle args =NewBundle (); Args.putint (Dummyfragment.arg_section_number, tab.getposition ()+ 1); //passing parameters to fragmentfragment.setarguments (args); //Get Fragmenttransaction ObjectFragmenttransaction ft =Getfragmentmanager (). BeginTransaction (); //use fragment instead of the container component in the activityFt.replace (R.id.container, fragment); //Commit a transactionFt.commit (); } @Override Public voidontabreselected (Actionbar.tab Tab, Fragmenttransaction fragmenttransaction) {}}

Fragment

 PackageCom.example.demoforactionbar;Importandroid.app.Fragment;ImportAndroid.os.Bundle;Importandroid.view.Gravity;ImportAndroid.view.LayoutInflater;ImportAndroid.view.View;ImportAndroid.view.ViewGroup;ImportAndroid.widget.TextView; Public classDummyfragmentextendsFragment { Public Static FinalString arg_section_number = "Section_number"; //The return value of the method is the view component displayed by the fragment@Override PublicView Oncreateview (layoutinflater inflater, ViewGroup container, Bundle savedinstancestate) {TEXTV Iew TextView=NewTextView (Getactivity ());        Textview.setgravity (gravity.center_horizontal); //Gets the parameter bundle passed in when the fragment was createdBundle args =getarguments (); //set the text displayed TextViewTextview.settext (Args.getint (arg_section_number) + ""); Textview.settextsize (30); //return to the TextView        returnTextView; }    }

2. Viewpager + Pagertopstrip

Xml:

<?xml version= "1.0" encoding= "Utf-8"?><Android.support.v4.view.ViewPager xmlns:android= "Http://schemas.android.com/apk/res/android"Android:id= "@+id/pager"Android:layout_width= "Match_parent"Android:layout_height= "Match_parent" > <!--define navigation status bar components---<Android.support.v4.view.PagerTitleStrip android:layout_width= "Match_parent"Android:layout_height= "Wrap_content"android:layout_gravity= "Top"Android:background= "#33b5e5"Android:textcolor= "#fff"Android:paddingtop= "4DP"Android:paddingbottom= "4DP"/></android.support.v4.view.viewpager>

Mainactivity:

 PackageCom.example.demoforactionbar;ImportAndroid.app.ActionBar;Importandroid.app.Activity;Importandroid.app.FragmentTransaction;ImportAndroid.os.Bundle;Importandroid.support.v4.app.Fragment;Importandroid.support.v4.app.FragmentActivity;ImportAndroid.support.v4.app.FragmentPagerAdapter;ImportAndroid.support.v4.view.ViewPager;ImportAndroid.view.Menu;ImportAndroid.view.MenuItem; Public classMainactivityextendsfragmentactivityImplementsactionbar.tablistener{Viewpager Viewpager;    ActionBar ActionBar; @Override Public voidonCreate (Bundle savedinstancestate) {Super. OnCreate (savedinstancestate);        Setcontentview (R.layout.activity_main); //Get Actionbar ObjectActionBar =Getactionbar (); //Get ViewpagerViewpager =(Viewpager) Findviewbyid (R.id.pager); //creates a Fragmentpageradapter object that is responsible for providing multiple fragment for ViewpagerFragmentpageradapter Pageradapter =NewFragmentpageradapter (Getsupportfragmentmanager ()) {//get fragment of location position@Override PublicFragment GetItem (intposition) {Fragment Fragment=Newdummyfragment (); Bundle args=NewBundle (); Args.putint (dummyfragment.arg_section_number, Position+ 1);                Fragment.setarguments (args); returnfragment; }            //The return value I of this method indicates how many fragment the adapter total includes@Override Public intGetCount () {return3; }            //The return value of the method determines the title of each fragment@Override PublicCharsequence Getpagetitle (intposition) {                Switch(position) { Case0:                        return"First Page";  Case1:                        return"Second Page";  Case2:                        return"Third page"; }                return NULL;        }        }; //setting Actionbar using the tab navigation methodActionbar.setnavigationmode (Actionbar.navigation_mode_tabs); //traverse all fragment contained by the Pageradapter object//Create a tab label for each fragment         for(inti = 0; I < Pageradapter.getcount (); i++) {Actionbar.addtab (Actionbar.newtab (). SetText (Pageradapter.getpagetitle (i)) . Settablistener ( This)); }        //set Fragmentpageradapter for Viewpager componentsViewpager.setadapter (Pageradapter);//①//to bind an event listener to a Viewpager componentViewpager.setonpagechangelistener (NewViewpager.simpleonpagechangelistener () {//This method is fired when the fragment of the Viewpager display changes@Override Public voidOnpageselected (intposition)                {Actionbar.setselectednavigationitem (position);    }            }); } @Override Public voidontabunselected (Actionbar.tab Tab, Fragmenttransaction fragmenttransaction) {}//fires this method when the specified tab is selected@Override Public voidontabselected (Actionbar.tab Tab, fragmenttransaction fragmenttransaction) {Viewpager.setcurrentite  M (Tab.getposition ()); //②} @Override Public voidontabreselected (Actionbar.tab Tab, Fragmenttransaction fragmenttransaction) {}}

Dummyfragment the parent package into the V4 package can be changed without error

 Public class extends android.support.v4.app.Fragment

Several methods of Android tab navigation: ActionBar tab +FRAGMENT,VIEWPAGER+PAGERTITLESTRIP, open source framework Viewpageindicator and Viewpager

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.