在项目中使用v7 包的ToolBar,使用了actionLayout:
activity中的应用:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.test_menu2, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
intid = item.getItemId();
if(id == R.id.action0) {
return true;
}
return super.onOptionsItemSelected(item);
}
运行的效果:
但是点击的时候没反应,不走onOptionsItemSelected方法,ActionBar设置了android:actionLayout也不走,我想这是一个bug吧,在stackoverflow上搜索了很多也找不到答案,如果有朋友发现有解决方法麻烦告诉我一下哦。所以要监听这个点击事件,可以这样做:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem actionViewItem = menu.findItem(R.id.action0);
//MenuItemCompat.getActionView(actionViewItem),这个就是actionLayout中的view
MenuItemCompat.getActionView(actionViewItem).setOnClickListener(this);
return super.onPrepareOptionsMenu(menu);
}
@Override
public void onClick(View v) {
switch(v.getId()){
caseR.id.action0://这里的id跟menu里面定义的item id是一样的
ToastUtil.showToastOfShort("hehe");
break;
}
}