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

一.添加标签 Tabs

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

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

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

  1. <strong>@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. }</strong>

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

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

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

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

  1. <strong> 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. };</strong>

而其中的ListContentFragment的代码为:

    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. }

【JAVA】鉴于plaincopy

上一篇:一遍记住 8 种排序算法与 Java 代码实现


下一篇:数字化IT人才与组织