如何在操作栏中显示进度条,代替其他操作栏项

时间:2013-12-14 11:30:57

标签: android android-actionbar progress-bar

我想要实现的是我在操作栏中有一个刷新按钮,当我按下此刷新按钮刷新提要时,我想要一个进度条(圆圈)代替刷新按钮。

我能够实现这一点 enter image description here

使用:

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setProgressBarIndeterminateVisibility(true);
setProgressBarIndeterminateVisibility(false);

但我需要的是刷新按钮替换为进度圈。

1 个答案:

答案 0 :(得分:0)

过去我实施了以下内容:

  1. 操作栏中的刷新按钮。
  2. 当用户按下刷新按钮时,视图将被设置为动画
  3. 以编程方式停止
  4. 您可以使用以下代码:

    @Override
    public boolean onCreateOptionsMenu(final Menu menu) {
        refresh = menu.add(0, R.string.menu_refresh, Menu.FIRST, getResources().getString(R.string.menu_refresh));
        refresh.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        final ImageView iv = new ImageView(this);
        iv.setImageResource(R.drawable.ic_action_refresh, this));
        iv.setClickable(true);
        iv.setOnClickListener(this);
        refresh.setActionView(iv);
        return true;
    }
    
    @Override
    public void onClick(final View v) {
        startAnimation();
        loadData();
    }
    
    private void startAnimation() {
        if (refresh == null) {
            return;
        }
        refresh.getActionView().setEnabled(false);
        final Animation animation = AnimationUtils.loadAnimation(this, R.anim.clockwise_rotation);
        animation.setRepeatCount(50);
        refresh.getActionView().startAnimation(animation);
    }
    
    private void stopAnimation() {
        if (refresh == null) {
            return;
        }
        final View v = refresh.getActionView();
        if (v.getAnimation() != null) {
            v.getAnimation().cancel();
            v.setEnabled(true);
        }
    }
    

    结果是:

    enter image description here

    enter image description here

    enter image description here