Android ActionBar使用方法(二)


       三、添加標籤 Tabs

  在ActionBar中實現標籤頁可以實現android.app.ActionBar.TabListener ,重寫onTabSelected、onTabUnselected和onTabReselected方法來關聯Fragment。代碼如下

Java代碼:
  1. private class MyTabListener implements ActionBar.TabListener {
  2. private TabContentFragment mFragment;
  3. public TabListener(TabContentFragment fragment) {
  4. mFragment = fragment;
  5. }
  6. @Override
  7. public void onTabSelected(Tab tab, FragmentTransaction ft) {
  8. ft.add(R.id.fragment_content, mFragment, null);
  9. }
  10. @Override
  11. public void onTabUnselected(Tab tab, FragmentTransaction ft) {
  12. ft.remove(mFragment);
  13. }
  14. @Override
  15. public void onTabReselected(Tab tab, FragmentTransaction ft) {
  16. }

  17. }

複製代碼

       接下來我們創建ActionBar在Activity中,代碼如下

Java代碼:
  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.main);
  5. final ActionBar actionBar = getActionBar(); //提示getActionBar方法一定在setContentView後面
  6. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
  7. actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
  8. Fragment artistsFragment = new ArtistsFragment();
  9. actionBar.addTab(actionBar.newTab().setText(R.string.tab_artists).setTabListener(new TabListener(artistsFragment)));
  10. Fragment albumsFragment = new AlbumsFragment();
  11. actionBar.addTab(actionBar.newTab().setText(R.string.tab_albums).setTabListener(new TabListener(albumsFragment)));
  12. }

複製代碼

       四、添加下拉導航 Drop-down Navigation

  創建一個SpinnerAdapter提供下拉選項,和Tab方式不同的是Drop-down只需要修改下setNavigationMode的模式,將ActionBar.NAVIGATION_MODE_TABS改爲ActionBar.NAVIGATION_MODE_LIST,最終改進後的代碼爲

Java代碼:
  1. ActionBar actionBar = getActionBar();
  2. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
  3. actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);

複製代碼

       上面我們通過setListNavigationCallbacks方法綁定一個SpinnerAdapter控件,具體的OnNavigationListener代碼示例爲

Java代碼:
  1. mOnNavigationListener = new OnNavigationListener() {
  2. String[] strings = getResources().getStringArray(R.array.action_list);
  3. @Override
  4. public boolean onNavigationItemSelected(int position, long itemId) {
  5. ListContentFragment newFragment = new ListContentFragment();
  6. FragmentTransaction ft = openFragmentTransaction();
  7. ft.replace(R.id.fragment_container, newFragment, strings[position]);
  8. ft.commit();
  9. return true;
  10. }

  11. };
複製代碼

        而其中的ListContentFragment的代碼爲

Java代碼:
  1. public class ListContentFragment extends Fragment {
  2. private String mText;

  3. @Override
  4. public void onAttach(Activity activity) {
  5. super.onAttach(activity);
  6. mText = getTag();
  7. }

  8. @Override
  9. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  10. Bundle savedInstanceState) {
  11. TextView text = new TextView(getActivity());
  12. text.setText(mText);
  13. return text;
  14. }
  15. }

複製代碼


系列之Android ActionBar使用方法(一)的帖子鏈接http://www.eoeandroid.com/thread-71410-1-1.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章