使用AppCompat ActionBar的问题

被support Appcompat actionbar不显示Home Icon的问题困扰了一下午,写点东西记录一下。 之前项目中使用的是Jfeinstein10 slidingMenu和Actionbarsherlock组合来呈现ActionBar和slidingMenu的,但是新项目中需要引入android-compat-support-v7. 因为Actionbarsherlock和support-v7是冲突的,不能在同一个项目中共存。所以需要替换Actionbarsherlock为support-lib中的Actionbar。

让Activity继承ActionBarActivity,然后在minefest中的activity中设置

theme=Theme.AppCompat.Light.DarkActionBar

但是最后的效果是ActionBar的Home icon死活不显示,但是原来用Actionbarsherlock是不用什么额外设置的啊。难道他们的用法不一样。翻墙去找答案。结果确实不一样。 首先自定义一个样式

 <style name="CustomerActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
          <item name="homeAsUpIndicator">@drawable/new_indicator</item>
    </style>

上面homeAsUpIndicator中指定的图片就是Home icon。 然后在minefest的Activity中使用这个Theme 在Activity中的代码

public class ActionBarDemo extends ActionBarActivity{
    public void onCreate(Bundle savedInstanceState) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
    
    public boolean onOptionsItemSelected(MenuItem item) {
		int id=item.getItemId();
		switch(id){
		case android.R.id.home:
			getSlidingMenu().toggle();
			break;
		default:
			return super.onOptionsItemSelected(item);
		}
		return true;
	}
}

在onCreate方法中使Home Icon显示,在onOptionsItemSelected方法中处理Home icon的点击事件,我在这里让它显示/关闭slidingMenu。

stack Overflow里说可以直接在minefest的Activity中添加android:icon=""来设置Home icon但是我没有成功。 关于Actionbarsherlock和ActionBar的比较可以参考这个提问 Actionbarsherlock Vs ActionBar

补充一点 在res目录下的有values*文件夹,比如values-v11,这个11指的就是android framework的版本号,在这里可以配置一些针对这个版本的特别设置,当在手机上运行时会根据手机的api版本选择离他最近但小于或者等于的values配置来设置界面。

转载于:https://my.oschina.net/wiselyming/blog/465761

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值