Android中ViewPager+Fragment的基本使用
生活随笔
收集整理的這篇文章主要介紹了
Android中ViewPager+Fragment的基本使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這幾天學習了一下ViewPager+Fragement的基本使用方法并寫了個Demo?,F將代碼和效果圖放上。
首先是布局文件
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ?<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" ????tools:context=".MainActivity"?> ????? ????<!--?ViewPager組件?--> ????<android.support.v4.view.ViewPager ????????android:id="@+id/viewpager" ????????android:layout_width="match_parent" ????????android:layout_height="match_parent"> ??????????????? ????????<!--?PagerTabStrip是標簽頁的切換效果?--> ????????<android.support.v4.view.PagerTabStrip ????????????android:id="@+id/pagertab"?? ????????????android:layout_width="wrap_content"?? ????????????android:layout_height="wrap_content"?? ????????????/>?? ?????????? ????</android.support.v4.view.ViewPager> ????? </RelativeLayout> <!--注意事項:????? ????1.這里ViewPager和?PagerTabStrip都要把包名寫全了,不然會ClassNotFount???? ????2.API中說:在布局xml把PagerTabStrip當做ViewPager的一個子標簽來用,不能拿出來,不然還是會報錯???? --> |
?
?2.MainActivity.java
????MainActivity主要就做了一些加載控件和實例化Fragment的事情,重點要注意的是MyViewPagerAdapter這個適配器的內部類。
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | package?com.xlp.myviewpagerfragment; import?java.util.ArrayList; import?android.os.Bundle; import?android.support.v4.app.Fragment; import?android.support.v4.app.FragmentActivity; import?android.support.v4.app.FragmentManager; import?android.support.v4.app.FragmentPagerAdapter; import?android.support.v4.view.PagerTabStrip; import?android.support.v4.view.ViewPager; import?android.view.Menu; import?android.view.MenuItem; public?class?MainActivity?extends?FragmentActivity?{ ?????private?ViewPager?m_vp; ?????//?通過pagerTabStrip可以設置標題的屬性 ?????private?PagerTabStrip?pagerTabStrip; ?????private?Fragment1?mfragment1; ?????private?Fragment2?mfragment2; ?????private?Fragment3?mfragment3; ?????//?頁面列表 ?????private?ArrayList<Fragment>?fragmentList; ?????//?標題列表 ?????private?ArrayList<String>?titleList?=?new?ArrayList<String>(); ?@Override ?protected?void?onCreate(Bundle?savedInstanceState)?{ ??super.onCreate(savedInstanceState); ??setContentView(R.layout.activity_main); ??initView(); ?} ?public?void?initView()?{ ??????m_vp?=?(ViewPager)?findViewById(R.id.viewpager); ??????pagerTabStrip?=?(PagerTabStrip)?findViewById(R.id.pagertab); ??????//?設置下劃線顏色 ??????pagerTabStrip.setTabIndicatorColor(getResources().getColor( ????????android.R.color.holo_green_dark)); ??????pagerTabStrip.setBackgroundColor(getResources().getColor( ????????android.R.color.holo_red_dark)); ??????mfragment1?=?new?Fragment1(); ??????mfragment2?=?new?Fragment2(); ??????mfragment3?=?new?Fragment3(); ??????fragmentList?=?new?ArrayList<Fragment>(); ??????fragmentList.add(mfragment1); ??????fragmentList.add(mfragment2); ??????fragmentList.add(mfragment3); ??????titleList.add("第一頁"); ??????titleList.add("第二頁"); ??????titleList.add("第三頁"); ??????m_vp.setAdapter(new?MyViewPagerAdapter(getSupportFragmentManager())); ?} ?????public?class?MyViewPagerAdapter?extends?FragmentPagerAdapter?{ ??????????public?MyViewPagerAdapter(FragmentManager?fm)?{ ???????????super(fm); ??????} ??????@Override ??????public?Fragment?getItem(int?arg0)?{ ???????????return?fragmentList.get(arg0); ??????} ??????@Override ??????public?int?getCount()?{ ???????????return?fragmentList.size(); ??????} ??????@Override ??????public?CharSequence?getPageTitle(int?position)?{ ???????????//?TODO?Auto-generated?method?stub ???????????return?titleList.get(position); ??????} ?} ?????@Override ?????public?boolean?onCreateOptionsMenu(Menu?menu)?{ ??????//?Inflate?the?menu;?this?adds?items?to?the?action?bar?if?it?is?present. ??????getMenuInflater().inflate(R.menu.main,?menu); ??????return?true; ?????} ?????@Override ?????public?boolean?onOptionsItemSelected(MenuItem?item)?{ ??????//?Handle?action?bar?item?clicks?here.?The?action?bar?will ??????//?automatically?handle?clicks?on?the?Home/Up?button,?so?long ??????//?as?you?specify?a?parent?activity?in?AndroidManifest.xml. ??????int?id?=?item.getItemId(); ??????if?(id?==?R.id.action_settings)?{ ???????return?true; ??????} ??????return?super.onOptionsItemSelected(item); ?????} } |
?
3.Fragment1.java
????其中的一個Fragment頁面,這里只展示一個,其他寫法相同
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | ?package?com.xlp.myviewpagerfragment; import?android.os.Bundle; import?android.support.v4.app.Fragment; import?android.util.Log; import?android.view.LayoutInflater; import?android.view.View; import?android.view.ViewGroup; public?class?Fragment1?extends?Fragment?{ ?private?View?mMainView; ?@Override ?public?void?onCreate(Bundle?savedInstanceState)?{ ??//?TODO?Auto-generated?method?stub ??super.onCreate(savedInstanceState); ??Log.i("xlp",?"fragment1-->oncreate()"); ??//動態加載布局文件 ??LayoutInflater?inflater?=?getActivity().getLayoutInflater(); ??mMainView?=?inflater.inflate(R.layout.fragment1, ????(ViewGroup)?getActivity().findViewById(R.id.viewpager),?false); ?} ?@Override ?public?View?onCreateView(LayoutInflater?inflater,?ViewGroup?container, ???Bundle?savedInstanceState)?{ ??Log.i("xlp",?"fragment1-->onCreateView()"); ??ViewGroup?viewGroup?=?(ViewGroup)?mMainView.getParent(); ??return?mMainView; ?} ?@Override ?public?void?onDestroy()?{ ??//?TODO?Auto-generated?method?stub ??super.onDestroy(); ??Log.v("xlp",?"fragment1-->onDestroy()"); ?} ?@Override ?public?void?onPause()?{ ??//?TODO?Auto-generated?method?stub ??super.onPause(); ??Log.v("xlp",?"fragment1-->onPause()"); ?} ?@Override ?public?void?onResume()?{ ??//?TODO?Auto-generated?method?stub ??super.onResume(); ??Log.v("xlp",?"fragment1-->onResume()"); ?} ?@Override ?public?void?onStart()?{ ??//?TODO?Auto-generated?method?stub ??super.onStart(); ??Log.v("xlp",?"fragment1-->onStart()"); ?} ?@Override ?public?void?onStop()?{ ??//?TODO?Auto-generated?method?stub ??super.onStop(); ??Log.v("xlp",?"fragment1-->onStop()"); ?} } |
?
????4.最后放上效果圖
????
總結
以上是生活随笔為你收集整理的Android中ViewPager+Fragment的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中三种超实用的滑屏方式汇总
- 下一篇: Android ViewPager多页面