zoukankan      html  css  js  c++  java
  • 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. }  
  • 相关阅读:
    快速浏览教材《计算机科学概论》提问
    2020-2021-1 20201329 《信息安全专业导论》第一周学习总结
    《密码与安全新技术专题》第一周作业
    《网络攻防》准备阶段
    20175312 2018-2019-2 《Java程序设计》第10、11周学习总结
    20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告
    MyCP(课下作业,必做)
    20175312 2018-2019-2 《Java程序设计》第9周学习总结
    20175312 2018-2019-2 《Java程序设计》第8周学习总结
    20175312 2018-2019-2 实验二 面向对象程序设计 实验报告
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4096690.html
Copyright © 2011-2022 走看看