Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航 .

一.添加标签 Tabs

  在ActionBar中实现标签页可以实现android.app.ActionBar.TabListener ,重写onTabSelected、onTabUnselected和onTabReselected方法来关联Fragment。代码如下:

private class MyTabListener implements ActionBar.TabListener {  

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


接下来我们创建ActionBar在Activity中,代码如下;

<STRONG>@Override  

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


二. 添加下拉导航 Drop-down Navigation:

创建一个SpinnerAdapter提供下拉选项,和Tab方式不同的是Drop-down只需要修改下setNavigationMode的模式,将ActionBar.NAVIGATION_MODE_TABS改为ActionBar.NAVIGATION_MODE_LIST,最终改进后的代码为

<STRONG>ActionBar actionBar = getActionBar();  
  1. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);  
  2. actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);</STRONG>  


上面我们通过setListNavigationCallbacks方法绑定一个SpinnerAdapter控件,具体的OnNavigationListener代码示例为;

<STRONG> mOnNavigationListener = new OnNavigationListener() {  

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



 而其中的ListContentFragment的代码为:

public class ListContentFragment extends Fragment {  

    1. private String mText;  
    2.   
    3. @Override  
    4. public void onAttach(Activity activity) {  
    5. super.onAttach(activity);  
    6. mText = getTag();  
    7. }  
    8.   
    9. @Override  
    10. public View onCreateView(LayoutInflater inflater, ViewGroup container,  
    11. Bundle savedInstanceState) {  
    12. TextView text = new TextView(getActivity());  
    13. text.setText(mText);  
    14. return text;  
    15. }  
原文地址:https://www.cnblogs.com/Free-Thinker/p/4096690.html