首页 > 代码库 > ActionBar基础学习之头部返回菜单

ActionBar基础学习之头部返回菜单

在开写之前需要先引入工程包lib_v7_appcompat,里面为我们提供了ActionBarActivity等许多相关类。

先新建一个activity来继承ActionBarActivity,在里面进行一些基本设置,如下:

/**
 * ActionBar基础activity,进行统一的属性设置 <br>
 * 所有顶部带有actionbar的类都继承此类。
 * 
 * @author leetoney
 * @time 2015年1月31日17:28:00
 * 
 */

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);
		}
	}

}

然后在MainActivity中继承这个BaseActionBarActivity,这里只设置了标题。

public class MainActivity extends BaseActionBarActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		getSupportActionBar().setTitle("返回");
	}
}
效果如图:

技术分享



ActionBar基础学习之头部返回菜单