您的位置:首页 > 移动开发 > Android开发

Android 导航条效果实现(五) ActionBar+Fragment

2016-09-19 17:21 453 查看

ActionBar(已过时,查看ToolBar)+Fragment实现选项卡的步骤:

当前窗体Activity类要继承于FragmentActivity,而不是Activity;

获取ActionBar对象:通过当前上下文对象的getActionBar()方法来实现;

设置ActionBar对象的导航模式为Tab导航模式;

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


分别创建Tab对象:

通过ActionBar对象的newTab()方法创建Tab对象;

通过Tab对象的setText()设置选项卡文字;

通过Tab对象的setTabListener()设置选项卡监听事件。

自定义ActionBar.TabListener的监听器;

为ActionBar对象添加Tab对象。通过ActionBar对象的addTab()方法实现添加选项卡。

参考代码

MainActivity.java

package com.noonecode.actionbartabdemo;

import java.util.ArrayList;
import java.util.List;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

@SuppressWarnings("deprecation")
public class MainActivity extends FragmentActivity {

private List<Fragment> fragments;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取ActionBar
ActionBar actionBar = getActionBar();
// ActionBar设置Tab模式
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// initdata
fragments = new ArrayList<Fragment>();
fragments.add(new FragmentRecord());
fragments.add(new FragmentContacts());
fragments.add(new FragmentFavor());
// Tag区分tab
Tab tab1 = actionBar.newTab().setTag(0).setText("通讯记录").setTabListener(listener);
Tab tab2 = actionBar.newTab().setTag(1).setText("联系人").setTabListener(listener);
Tab tab3 = actionBar.newTab().setTag(2).setText("收藏夹").setTabListener(listener);
actionBar.addTab(tab1);
actionBar.addTab(tab2);
actionBar.addTab(tab3);
}

private TabListener listener = new TabListener() {

@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
// 当前tab的tag作为fragments的index下标
int position = (Integer) tab.getTag();
// 切换页面
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fl_container, fragments.get(position));
fragmentTransaction.commit();
}

@Override
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
}

@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
}
};
}


activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fl_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.noonecode.actionbartabdemo.MainActivity" >
</FrameLayout>


每个Fragment很简单,不再赘述。

示例效果



注意

开始actionBar.setTab(…)方法,默认会触发TabListener的onTabSelected方法选中第一个Tab,这里需要注意一下。

注意几个Fragment复制的时候,布局不要加载错了。

(完毕)

导航:

Android 导航条效果实现(一) TabActivity+TabHost

http://blog.csdn.net/qq_33425116/article/details/52573967

Android 导航条效果实现(二) FragmentTabHost

http://blog.csdn.net/qq_33425116/article/details/52575811

Android 导航条效果实现(三) ViewPager+PagerTabStrip

http://blog.csdn.net/qq_33425116/article/details/52577570

Android 导航条效果实现(四) ViewPager+自定义导航条

http://blog.csdn.net/qq_33425116/article/details/52584282

Android 导航条效果实现(五) ActionBar+Fragment

http://blog.csdn.net/qq_33425116/article/details/52587635

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment

http://blog.csdn.net/qq_33425116/article/details/52599818
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android actionbar 导航 tab