Tab的使用
设置Tab模式
<span style="font-size:12px;">final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);</span>
添加tab
<span style="font-size:12px;">actionBar.addTab(actionBar.newTab().setText("Tab A").setTag(TAG_TAB_A)
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("Tab B").setTag(TAG_TAB_B)
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("Tab C").setTag(TAG_TAB_C)
.setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("Tab D").setTag(TAG_TAB_D)
.setTabListener(this));</span>
tab的选中监听:选中后切换fragment
<span style="font-size:12px;">@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
Log.e(TAG, "onTabSelected : " + arg0.getText());
Fragment f = getFragmentByTag(arg0.getTag());
if (f != null) {
if (!f.isAdded()) {
arg1.add(R.id.fragment_tab_content, f, arg0.getTag().toString());
}
arg1.show(f);
}
}
@Override
public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
Log.e(TAG, "onTabUnselected : " + arg0.getText());
Fragment f = getFragmentByTag(arg0.getTag());
if (f != null && f.isAdded()) {
arg1.hide(f);
}
}
@SuppressLint("Recycle")
public void showFragment(Fragment f, int id, String tag, boolean backStack) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (!f.isAdded()) {
ft.add(id, f, tag);
if (backStack) {
ft.addToBackStack(null);
}
}
ft.show(f);
ft.commit();
}</span>
menu的使用
main.xml
<span style="font-size:12px;"><menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.fragment.MainActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/>
</menu>
</span>
showAsAction属性用来定义每个Action是如何显示的,always表示永远显示在ActionBar中,如果屏幕空间不够则无法显示,ifRoom表示屏幕空间够的情况下显示在ActionBar中,不够的话就显示在overflow中,never则表示永远显示在overflow中。
在代码中添加
<span style="font-size:12px;">@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}</span>