1. 程式人生 > >android實現tab切換效果

android實現tab切換效果

一:利用ViewPager實現Tab切換效果

1.首先新建幾個要切換的xml佈局檔案,然後在主佈局中間新增<android.support.v4.view.ViewPager>佈局,用於顯示我們寫好的xml佈局。

2.在主方法中,定新增程式碼如下:LayoutInflater mInflater = LayoutInflater.from(this);View tab01  = mInflater.inflate(R.layout.tab01, null);mViews.add(tab01);其中的mView代表我們list資料來源。

3.實現PagerAdapter()介面卡,注意要重寫其中的

destroyItem方法,在裡面實現container.removeView(mViews.get(position)); public Object instantiateItem(ViewGroup  container, int position)方法中獲取當前顯示的view,並將其新增到ViewGroup中。

4.設定前面實現的介面卡,然後新增按鈕的點選時間,將其與我們活動的ViewPager繫結, 這樣只有當我們點選按鈕,或是滑動按鈕時的按鈕顏色變化;最後需要新增一個setOnPageChangeListener的方法來監聽ViewPager的活動。主要是在public void  onPageSelected(int arg0)

方法中實現邏輯程式碼。

5.綜上所述,利用利用ViewPager實現Tab切換效果實現思路基本完成。具體程式碼參考:

二:利用Fragment實現Tab切換效果(不能滑動)

1.首先仍然需要新建需要切換的xml佈局檔案,然後在主佈局中新增FrameLayout 以顯示前 面寫好的佈局檔案。

2.新建幾個類,一個佈局對應一個類,用於載入我們的佈局。該類需要繼承 Fragment,然 後重寫public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle  savedInstanceState){ return inflater.inflate(R.layout.tab04, container, false); },其中 的

R.layout.tab04對應我們前面寫好的xml佈局檔案。

3.將繼承自AppActivity 的 MainActivity改成繼承FragmentActivity 

4.獲取之前寫好的類並顯示出來,具體的邏輯程式碼如下:

FragmentManager fm = getSupportFragmentManager();//獲取FragmentManage物件

FragmentTransaction transaction = fm.beginTransaction();//通過FragmentManage物件,獲 取FragmentTransaction物件。

Fragment mTab01 = new WeixinFragment(); //例項化前面寫好的類 (WeixinFragment()對應一個xml佈局檔案,在之前我們已經寫好)

transaction.add(R.id.id_content, mTab04); //顯示xml佈局檔案到指定的id控制元件中

transaction.commit(); //最後不要忘了commit一下我們的事物。

5.設定按鈕與Fragment 想呼應,可以通過按鈕切換view。具體程式碼比較簡單,可以參考:

Ps:在這裡我不得不得提醒一次,在匯入包的時候,我們一定要慎重,如果我們Fragment的包倒的是android.support.v4.app.Fragment;,後面的.FragmentManagerFragmentTransactionFragmentActivity;全部都要匯入android.support.v4.app這個下面的 子包。不然就會出錯。保持包的一致,保持包的一致,保持包的一致。重要的事情說三 篇。

三:利用Fragment實現Tab切換效果(可以滑動)

1.首先仍然需要新建需要切換的xml佈局檔案,然後在主佈局中新增android.support.v4.view.ViewPager以顯示前面寫好的佈局檔案。

2.與前面的第二步一致,再次不做贅述。

3. MainActivity仍然需要繼承FragmentActivity

4.建立FragmentPagerAdapter介面卡和新增Fragmenllist中,主要實現邏輯程式碼。

新建一個List 將前面寫好的類例項化並且新增到list當中來。然後在 FragmentPagerAdapter介面卡中重寫public Fragment getItem(int arg0)public int  getCount()方法,用於返回當前選中的FragmentItemFragmentcount.

5.新增OnPageChangeListener的監聽器,通過重寫 public void  onPageSelected(int arg0)方 法按鈕相繫結。

6.新增按鈕的監聽事件,實現與相互動。具體程式碼參考:https://github.com/Reoger/frament_view.git

ps:最後我還是想說一句,在匯入Fragment相對應的包的時候,一定只能匯入一個包下的子包。)