在开写之前需要先引入工程包lib_v7_appcompat,里面为我们提供了ActionBarActivity等许多相关类。
先新建一个activity来继承ActionBarActivity,在里面进行一些基本设置,如下:
/**
* ActionBar基础activity,进行统一的属性设置
* 所有顶部带有actionbar的类都继承此类。
*/
public class BaseActionBarActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 设置窗口风格为顶部显示Actionbar
supportRequestWindowFeature(WindowCompat.FEATURE_ACTION_BAR);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true); // 决定左上角图标的右侧是否有向左的小箭头, true
// 有小箭头,并且图标可以点击
actionBar.setDisplayShowHomeEnabled(false);
// 使左上角图标是否显示,如果设成false,则没有程序图标,仅仅就个标题,
// 否则,显示应用程序图标,对应id为android.R.id.home,对应ActionBar.DISPLAY_SHOW_HOME
// force use of overflow menu on devices with menu button
// 在actionbar中显示溢出菜单选项
// http://stackoverflow.com/questions/9286822/how-to-force-use-of-overflow-menu-on-devices-with-menu-button
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class
.getDeclaredField(sHasPermanentMenuKey);
if (menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception ex) {
// Ignore
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:// 点击返回图标事件
this.finish();
default:
return super.onOptionsItemSelected(item);
}
}
}
然后在自己的Activity中继承这个BaseActionBarActivity,这里只设置了标题。
public class MainActivity extends BaseActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setTitle(返回);
}
}
效果如图: