一、設置顯示/隱藏ActionBarjava
菜單xml文件android
<menu xmlns:android="http://schemas.android.com/apk/res/android" >ide
<itemthis
android:id="@+id/menu1"spa
android:orderInCategory="1"orm
android:showAsAction="ifRoom|withText" // ifRoom:若是ActionBar有空間則顯示, withText儘量的顯示文本xml
android:title="菜單1"/>three
<item事件
android:id="@+id/menu2"get
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);
}
效果:
二、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組件
效果:
三、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);
}
}
四、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;
}
});
效果: