自己写了一个ActionBar的菜单,效果很好,但是发现压实点击的过频,menu菜单就会离奇的消失。
后来在网上仔细的浏览才发现时MenuItem的问题。
MenuItem有几个模式。
MenuItem.SHOW_AS_ACTION_IF_ROOM 有位置才显示
MenuItem.SHOW_AS_ACTION_ALWAYS 始终显示
MenuItem.SHOW_AS_ACTION_NEVER 永不显示
MenuItem.SHOW_AS_ACTION_WITH_TEXT 显示字符串
默认的可能是有位置时才显示,点击的频率高了,占用的空间多了,就会把图标隐藏了,于是我在代码里进行了一次设置,之后问题就解决了,具体代码如下
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
switch (item.getItemId()) {
case R.id.menu_refresh:
//选中刷新按钮后刷新一秒钟
item.setActionView(R.layout.actionbar_progress);
handler.postDelayed(new Runnable() {
public void run() {
item.setActionView(null);
}
}, 1000);
System.out.println("点击了刷新");
break;
case R.id.menu_search:
System.out.println("zheshiyieg haoren");
break;
}
return super.onOptionsItemSelected(item);
}
方法里的第一句话就是,剩下的代码是对menu的选项的添加。每个人的工程里的位置不一样,但只要能找到回调函数,然后设置 一下就行。