MainActivity.java
public class MainActivity extends Activity {
private ActionBar mActionBar = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initActionBar();
setOverflowShowingAlways();
}
private void initActionBar() {
//启用导航功能
mActionBar = getActionBar();
mActionBar.setDisplayHomeAsUpEnabled(true);
}
//actionBar创建的时候调用,初始化菜单列表
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.action_bar_menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
return super.onCreateOptionsMenu(menu);
}
//菜单项点击时的监听
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.user:
Toast.makeText(this, "你点击了“用户”按键!", Toast.LENGTH_SHORT).show();
return true;
case R.id.display:
Toast.makeText(this, "你点击了“发布”按键!", Toast.LENGTH_SHORT).show();
return true;
case R.id.favo:
Toast.makeText(this, "你点击了“收藏”按键!", Toast.LENGTH_SHORT).show();
return true;
//系统id,ActionBar的后退导航。
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
//设置总是显示overFlow按键
private void setOverflowShowingAlways() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
} catch (Exception e) {
e.printStackTrace();
}
}
}
action_bar_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/user"
android:showAsAction="never"
android:title="用户"/>
<item
android:id="@+id/display"
android:showAsAction="never"
android:title="发布"/>
<item
android:id="@+id/favo"
android:showAsAction="never"
android:title="收藏"/>
<item
android:id="@+id/action_search"
android:actionViewClass="android.widget.SearchView"
android:showAsAction="always"
android:title="搜索"/>
</menu>
效果:
点击最右边overFlow按钮后:
注意:
1.ActionBar还可以实现Tab切换栏,但目前更推荐用MD风格的TabsLayout + viewPager + fragment来实现。
2.MD风格中,一般用Toolbar代替ActionBar。
3.以上使用了系统自带的SearchView,具体使用方法可百度。
4.在AndroidManifest.xml中配置theme,即可添加ActionBar。
android:theme="@style/AppTheme">