actionBar活动条的使用2
为标题栏设置选项卡:
import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.ActionBar.TabListener; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; public class MainActivity extends Activity implements TabListener { private ActionBar actionBar; private FragmentManager fragmentManager; private Fragment01 fragment01;//这里每个碎片显示一个简单的textview布局文件 private Fragment02 fragment02; private Fragment03 fragment03; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fragmentManager = getFragmentManager();//打开碎片管理器 //初始化fragment fragment01 = new Fragment01(); fragment02 = new Fragment02(); fragment03 = new Fragment03(); // 将fragment与actionbar的标题绑定 actionBar = getActionBar(); // 设置tab的样式,该样式为选项卡模式 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // 给actionbar设置tab导航标题 // 声名一个tab Tab newTab = actionBar.newTab(); // 给tab设置一个标题 newTab.setText("体育"); //给tab设置tag newTab.setTag("体育"); // tab必须有一个callback newTab.setTabListener(this); // 添加一个tab到actionbar actionBar.addTab(newTab); Tab newTab2 = actionBar.newTab(); newTab2.setText("宝宝"); newTab.setTag("宝宝"); newTab2.setTabListener(this); actionBar.addTab(newTab2); Tab newTab3 = actionBar.newTab(); newTab3.setText("女排"); newTab.setTag("女排"); newTab3.setTabListener(this); actionBar.addTab(newTab3); } /** * 当初次加载的时候,也会调用 当某个tab选中的时候调用 */ @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { // 获得被选中的索引 int position = tab.getPosition(); //打开事务 FragmentTransaction beginTransaction = fragmentManager.beginTransaction(); Fragment fragment = null; switch (position) { case 0: fragment = fragment01; break; case 1: fragment =fragment02; break; case 2: fragment = fragment03; break; } //替换,替换之前会把被替换的删了 beginTransaction.replace(R.id.fl_fragment, fragment); beginTransaction.commit(); } /** * 当tab从选中切换到没有选中的时候调用 */ @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { } /** * 当tab又一次被选中的时候 */ @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } }
效果如下:
2.下拉列表模式:
import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.widget.ArrayAdapter; public class MainActivity extends Activity { private ActionBar actionBar; private FragmentManager fragmentManager; private Fragment01 fragment01; private Fragment02 fragment02; private Fragment03 fragment03; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fragmentManager = getFragmentManager(); fragment01 = new Fragment01(); fragment02 = new Fragment02(); fragment03 = new Fragment03(); actionBar = getActionBar(); actionBar.setTitle("标题"); //设置tab的模式,这里为list列表的模式 actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); //声名adapter ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this,R.layout.layout_tablist_item,R.id.tv_test, new String[]{"体育","宝宝","女排"}); //设置tab 参数: 1.SpinnerAdapter adapter,标题列表的adapter 2.OnNavigationListener callback 监听 actionBar.setListNavigationCallbacks(arrayAdapter, new ActionBar.OnNavigationListener() { /* * 当listtab的一个item被点击的时候调用,第一次进入页面时也会调用 */ @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { int position = itemPosition;// 获得被选中的索引 FragmentTransaction beginTransaction = fragmentManager.beginTransaction(); Fragment fragment = null; switch (position) { case 0: fragment = fragment01;//继承了fragment break; case 1: fragment =fragment02; break; case 2: fragment = fragment03; break; } beginTransaction.replace(R.id.fl_fragment, fragment); beginTransaction.commit(); return false; } }); } }
效果: