1、设置显示/隐藏ActionBar
菜单xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu1"
android:orderInCategory="1"
android:showAsAction="ifRoom|withText" // ifRoom:如果ActionBar有空间则显示, withText尽可能的显示文本
android:title="菜单1"/>
<item
android:id="@+id/menu2"
android:orderInCategory="2"
android:showAsAction="collapseActionView|withText" // 如果想让这个选项放在 中,可以使用collapseActionView
android:title="菜单2" />
<item
android:id="@+id/menu3"
android:orderInCategory="2"
android:showAsAction="ifRoom|withText"
android:title="菜单3">
<menu>
<item
android:id="@+id/m1"
android:orderInCategory="1"
android:title="子项1"/>
<item
android:id="@+id/m2"
android:orderInCategory="2"
android:title="子项2"/>
</menu>
</item>
</menu>
显示/隐藏ActionBar
bar = super.getActionBar();
bar.show();
bar.hide();
处理菜单的点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.m1:
Toast.makeText(this, "选择了1", Toast.LENGTH_SHORT).show();
break;
case R.id.m2:
Toast.makeText(this, "选择了2", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
效果:
2、ActionBar + 系统View
<item
android:id="@+id/main3"
android:orderInCategory="3"
android:showAsAction="always" // 始终显示。优先级最高
android:actionViewClass="android.widget.SearchView" />
android:actionViewClass="android.widget.SearchView"会显示android系统自带的Search组件
效果:
3、ActionBar + Tab
Fragment java文件
public class Frag extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag, null);
TextView show = (TextView) view.findViewById(R.id.show);
String text = super.getArguments().getString("key");
show.setText(text);
Toast.makeText(super.getActivity(), text, Toast.LENGTH_SHORT).show();
return view;
}
}
mainActivity文件
public class MainActivity extends Activity {
private ActionBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar = super.getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setHomeButtonEnabled(true);
ActionBar.Tab tab1 = bar.newTab().setText("未接电话").setTag("one")
.setTabListener(new Listener());
ActionBar.Tab tab2 = bar.newTab().setText("已接电话").setTag("two")
.setTabListener(new Listener());
ActionBar.Tab tab3 = bar.newTab().setText("所有电话").setTag("three")
.setTabListener(new Listener());
bar.addTab(tab1);
bar.addTab(tab2);
bar.addTab(tab3);
}
private class Listener implements TabListener {
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Bundle bundle = new Bundle();
if ("one".equals(tab.getTag())) {
bundle.putString("key", "未接电话 18254588552 10:20:00");
}else if("two".equals(tab.getTag())) {
bundle.putString("key", "已接电话 18254588552 10:20:00");
}else if("three".equals(tab.getTag())) {
bundle.putString("key", "所有电话 18254588552 10:20:00");
}
Fragment frag = new Frag();
frag.setArguments(bundle);
ft.replace(R.id.content, frag); // 不需要commit, 系统会自动commit
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() != R.id.main3) {
Toast.makeText(this, "选择了" + item.getTitle(), Toast.LENGTH_SHORT)
.show();
}
return super.onOptionsItemSelected(item);
}
}
4、ActionBar List显示
bar = super.getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
bar.setHomeButtonEnabled(true);
bar.setIcon(R.drawable.ic);
bar.setListNavigationCallbacks(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, titles),
new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition,
long itemId) {
Toast.makeText(MainActivity.this, titles[itemPosition],
Toast.LENGTH_SHORT).show();
return false;
}
});
效果: