`
dengbaoleng
  • 浏览: 1133127 次
文章分类
社区版块
存档分类
最新评论

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. }
复制代码


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics