Android中ViewPager+Fragment的基本使用

來源:互聯網
上載者:User

標籤:

這幾天學習了一下ViewPager+Fragement的基本使用方法並寫了個Demo。現將代碼和放上。

  1. 首先是布局檔案

 <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這個適配器的內部類。

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頁面,這裡只展示一個,其他寫法相同

 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的基本使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.