Android ActionBar Tabs學習筆記

openkk 12年前發布 | 58K 次閱讀 Android Android開發 移動開發

本例主要實現用Tab切換不同的Fragment,點擊View顯示or隱藏ActionBar,把ActionBar 設為透明,使界面更加友好,詳細代碼見資源里的ActionBarTabs。

ActionBar Tab主要用于Fragment之間的切換,其必須要設置ActionBar.TabListener,詳細代碼如下ActionBarActivity.java:

import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.MotionEvent;
import android.view.Window;

public class ActionBarActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //使ActionBar變得透明
        requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
        setContentView(R.layout.main);

        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        // remove the activity title to make space for tabs
        actionBar.setDisplayShowTitleEnabled(false);

        AFragment aFragment = new AFragment(); 
        actionBar.addTab(actionBar.newTab().setText("Tab-A")            
                .setTabListener(new ListenerA(aFragment))); 

        BFragment bFragment = new BFragment(); 
        actionBar.addTab(actionBar.newTab().setText("Tab-B")            
                .setTabListener(new ListenerB(bFragment)));
    }
    //點擊顯示or隱藏ActionBar
    public boolean onTouchEvent(MotionEvent event){
        ActionBar bar = getActionBar();
        switch(event.getAction()){
            case MotionEvent.ACTION_UP:
                if(bar.isShowing()) bar.hide();
                else bar.show();
                break;
            default:
                    break;
        }
        return true;
    }

    private class ListenerA implements ActionBar.TabListener {
        private AFragment mFragment;
        // Called to create an instance of the listener when adding a new tab
        public ListenerA(AFragment fragment) {
            mFragment = fragment;
        }
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            ft.add(R.id.fragment, mFragment, null);
        }
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            ft.remove(mFragment);
        }
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            // do nothing }
        }
    }

    private class ListenerB implements ActionBar.TabListener {
        private BFragment mFragment;

        // Called to create an instance of the listener when adding a new tab
        public ListenerB(BFragment fragment) {
            mFragment = fragment;
        }

        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            ft.add(R.id.fragment, mFragment, null);
        }

        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            ft.remove(mFragment);
        }

        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            // do nothing }
        }
    }
}

其中涉及到兩個Fragment,在前面Fragment的筆記中講過,這里就不再贅述。類AFragment實現如下,BFragment實現與這類似:
public class AFragment extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {        
        return inflater.inflate(R.layout.alayout, container, false);   
        }
    }

文章出處:http://blog.csdn.net/flying_tao/article/details/6615171

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!