Android:setActionView(null)不';t使用ActionView删除菜单项上的视图和宽度问题

Android:setActionView(null)不';t使用ActionView删除菜单项上的视图和宽度问题,android,android-actionbar,Android,Android Actionbar,我试着用一个动作视图为ActionBar的菜单项设置动画,就像有一个旋转刷新按钮一样。但我有两个问题: 当我显示动作视图时,项目的宽度小于MenuItem(参见屏幕截图的第1部分和第2部分) 当我想通过setActionView(null)停止动画并返回默认MenuItem状态时,我的动作视图仍然显示在我的MenuItem中(屏幕截图的第3部分) ActionView布局(R.Layout.menu\u item\u refresh)是: 加载完成后,我调用一个处理程序mAnimatedIte

我试着用一个动作视图为ActionBar的菜单项设置动画,就像有一个旋转刷新按钮一样。但我有两个问题:

  • 当我显示动作视图时,项目的宽度小于MenuItem(参见屏幕截图的第1部分和第2部分)
  • 当我想通过setActionView(null)停止动画并返回默认MenuItem状态时,我的动作视图仍然显示在我的MenuItem中(屏幕截图的第3部分)
  • ActionView布局(R.Layout.menu\u item\u refresh)是:


    加载完成后,我调用一个处理程序mAnimatedItem.setActionView(null)

    如果我正确地理解了您的代码,您可以将动画应用到MenuItem。您可以通过
    setActionView(null)
    删除ActionView,但menuItem会设置动画

    您需要从ActionView获取图像并对其应用动画:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()){               
        default:
            return super.onOptionsItemSelected(item);
    
        case R.id.Menu_Feed_Refresh:
            mAnimatedItem = item;
            item.setActionView(R.layout.menu_item_refresh);
            ImageView iv = (ImageView) item.getActionView().findViewById(R.id.refresh_image_id);
            iv.startAnimation(mAnimation);
            load();
            return true;
        }
    }
    

    当您想停止时,请调用
    mAnimation.clearAnimation()

    您能解决这个问题吗?
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){               
            default:
                return super.onOptionsItemSelected(item);
    
            case R.id.Menu_Feed_Refresh:
                mAnimatedItem = item;
                item.setActionView(R.layout.menu_item_refresh);
                item.startAnimation(mAnimation);
    
                load();
                return true;
        }
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()){               
        default:
            return super.onOptionsItemSelected(item);
    
        case R.id.Menu_Feed_Refresh:
            mAnimatedItem = item;
            item.setActionView(R.layout.menu_item_refresh);
            ImageView iv = (ImageView) item.getActionView().findViewById(R.id.refresh_image_id);
            iv.startAnimation(mAnimation);
            load();
            return true;
        }
    }