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

相关问题