ActionBarSherlock不确定进度条显示在操作栏的顶部

时间:2014-03-25 14:49:20

标签: android-actionbar actionbarsherlock progress android-theme android-progressbar

我正在获得ABS不确定的进度,但它似乎超出了操作栏。这与ABS Progress演示行为一致,但它不是我想要的。 我想要Gmail行为。

以下是我的截图和ABS演示进度截图以及我的代码:

  • enter image description here

  • enter image description here

    package com.demo.uiproofer;
    
    import java.util.concurrent.atomic.AtomicBoolean;
    
    import com.actionbarsherlock.app.SherlockActivity;
    import com.actionbarsherlock.view.Menu;
    import com.actionbarsherlock.view.MenuItem;
    
    import android.os.Bundle;
    import android.util.Log;
    public class MainActivity extends SherlockActivity{
        private static String TAG = "MainActivity";
        private AtomicBoolean isRefreshing;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);        
            requestWindowFeature((long)com.actionbarsherlock.view.Window.FEATURE_PROGRESS);
            setContentView(R.layout.activity_main);
            getSherlock();
            getSupportActionBar();
            //setSupportProgressBarIndeterminateVisibility(false);
            if (isRefreshing==null) {
                isRefreshing = new AtomicBoolean(false);
            }
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getSupportMenuInflater().inflate(R.menu.main, menu);
            setSupportProgressBarVisibility(true);
            setSupportProgressBarIndeterminateVisibility(false);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                setSupportProgressBarIndeterminate(true);            
                if (isRefreshing.get()==false) {
                    Log.i(TAG, "On Start Refresh Click!");
                    getSherlock();
                    getSupportActionBar();
                    setSupportProgressBarVisibility(true);
                    //setSupportProgressBarIndeterminateVisibility(true);
                }
                else {
                    Log.i(TAG, "On Stop Refresh Click!");
                    getSherlock();
                    getSupportActionBar();
                    setSupportProgressBarVisibility(false);
                    //setSupportProgressBarIndeterminateVisibility(false);
                }
                isRefreshing.set(!isRefreshing.get());
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    
    }
    

我想要的是不确定进度条的Gmail行为,当然不需要刷新:

enter image description here

1 个答案:

答案 0 :(得分:2)

ActionBar的默认行为是在其上显示进度。解决这个问题的“最纯粹”的方法是完全改变ActionBar的主题并将其反转,这是非常棘手的,我甚至都没有尝试过。

有一个非常快速的解决方法,它是创建一个支持布局顶部进度条的BaseActivity。

您可以找到包含布局和BaseActivity here的要点。

P.S。由于我最初使用新的Android兼容性库而不是ActionbarSherlock创建了这个,因此可能存在小错别字。

享受!