有关Android活动栏-ActionBar的功能除了添加活动条目 Action Items和添加活动视图 Action View外今天Android123和大家一起来看下支持多Fragment切换的ActionBar标签页和下拉导航。

三、添加标签 Tabs

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

private class MyTabListener implements ActionBar.TabListener {
private TabContentFragment mFragment;

// Called to create an instance of the listener when adding a new tab
public TabListener(TabContentFragment fragment) {
mFragment = fragment;
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.add(R.id.fragment_content, mFragment, null);
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(mFragment);
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// do nothing
}

}

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

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

final ActionBar actionBar = getActionBar(); //Android开发网提示getActionBar方法一定在setContentView后面
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

Fragment artistsFragment = new ArtistsFragment();
actionBar.addTab(actionBar.newTab().setText(R.string.tab_artists)
.setTabListener(new TabListener(artistsFragment)));

Fragment albumsFragment = new AlbumsFragment();
actionBar.addTab(actionBar.newTab().setText(R.string.tab_albums)
.setTabListener(new TabListener(albumsFragment)));
}

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

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

ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);You should perform this during your activity's onCreate() method.

actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback);

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

mOnNavigationListener = new OnNavigationListener() {

String[] strings = getResources().getStringArray(R.array.action_list);

@Override
public boolean onNavigationItemSelected(int position, long itemId) {

ListContentFragment newFragment = new ListContentFragment();
FragmentTransaction ft = openFragmentTransaction();

ft.replace(R.id.fragment_container, newFragment, strings[position]);

ft.commit();
return true;
}
};

而其中的ListContentFragment的代码为

public class ListContentFragment extends Fragment {
private String mText;

@Override
public void onAttach(Activity activity) {

super.onAttach(activity);
mText = getTag();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

TextView text = new TextView(getActivity());
text.setText(mText);
return text;
}
}

有关Android ActionBar的四种方式我们已经大概了解,具体的示例工程代码,明天Android开发网继续解析

更多相关文章

  1. Ubuntu 12.04中下载android源代码
  2. Android 代码混淆及反编译方法
  3. 代码控制一段时间只触发一次事件(防止多次点击) Android
  4. Android修改字体样式的示例代码
  5. google android最新源代码镜像(git.oschina.net)
  6. Android Studio使用Lint进行代码检查
  7. 初学Android做计时器和代码
  8. android 源代码构建和运行cts
  9. 实现TextView的垂直滚动以及通过代码设置TextView滚动无法显示滚

随机推荐

  1. Android自动解除系统锁屏
  2. android进程间服务通信示例
  3. Android(安卓)Activity之间跳转与传值
  4. Android 实现记住用户名和密码的功能
  5. 在Linux下安装Android SDK
  6. adb logcat命令查看并过滤android输出log
  7. android 上下文菜单Context Menu--折腾一
  8. Unity调用高德地图API,获取定位信息(Androi
  9. cocos2d for android 项目的部署
  10. Android 自动朗读(TTS)