0

我得到了ABS不確定的進度出現,但它出現在操作欄上方。這與ABS Progress演示行爲一致,但這不是我想要的。 我想要Gmail的行爲。ActionBarSherlock不確定的進度條顯示在操作欄上

這裏是我的截圖和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

+0

請檢查我的回答帖子this.https://stackoverflow.com/questions/13934010/progressbar-under-action-bar/23609484#23609484 – Rank

回答

2

的動作條的默認行爲是顯示在它之上的進展。解決這個問題的「最純粹的」方法是完全改變ActionBar的主題並將其逆轉,這非常棘手,甚至沒有嘗試過。

有一個非常快速的解決方法艱難,它是創建一個支持佈局頂部的進度條的BaseActivity。

您可以通過佈局和BaseActivity here找到要點。

P.S.由於我最初是使用新的Android兼容性庫而不是ActionbarSherlock創建的,因此可能會有小錯別字。

享受!

+0

嗨安東尼,我知道有關BaseActivity解決方案,但它有點難以使用,因爲我們可能有3-4個非常不同的基本活動已經爲應用程序中的數百個兒童活動...試圖以某種方式避免長鏈層次鏈。我們確實找到了另一種可能的解決方案,即提供此行爲的自定義庫。希望我記得它是哪個。但我會回來的。所以不要將它標記爲正確,但我正在投票! – Radu

+0

嗨拉杜,很高興聽到你找到了更好的解決方案,如果你記得它,我很想知道哪一個。 感謝upvoting! – akalipetis

+0

@Radu你找到的圖書館是什麼? – Thiago

相關問題