2012-01-30 14 views
30

Ben ActionBar kullanıyorum. İplik çubuğuna yenilediysem, yenilemeye devam edersem, aksi takdirde onu gizlerim. o/eğirme "in progress" olmadıkçaActionBar'da ilerleme döndürücüyü (yenileme) göster?

// My menu has a refresh item, but it shouldn't be visible on the 
// actionbar unless it's spinning. 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_refresh" 
    android:title="@string/refresh" 
    android:icon="@drawable/ic_action_refresh" /> 
</menu> 

... 

// When I need to show some work being done on my activity, 
// can I somehow now make the spinner associated with the 
// refresh item become visible on the action bar? 
getActionBarHelper().setRefreshActionItemState(true); 

Ben İşlem Çubuğu üzerine istemiyoruz mümkün olduğunu ?: mi. Bu ActionBarSherlock dan

sayesinde telefondan gönderme

cevap

75

Özür kod etiketleri için, ...

(bunu rastlamadım verdiyseniz Google'da öncesi petek İşlem Çubuğu desteği sağlayan)

// This has to be called before setContentView and you must use the 
// class in android.support.v4.view and NOT android.view 

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 

ana faaliyet onCreate yılında

işlem çubuğunda/gizleme ilerlemesini göstermek için. Eğer bir ActionBarActivity gelen uzanıyorsa ......... false/doğru değil, YANLIŞ boolean.TRUE/kullanmalıdır ActionBarSherlock ile

if (getSupportLoaderManager().hasRunningLoaders()) { 
    setProgressBarIndeterminateVisibility(Boolean.TRUE); 
} else { 
    setProgressBarIndeterminateVisibility(Boolean.FALSE); 
} 
+0

Tamam teşekkürler biraz oralarda gezeceğim. SDK ile sağlanan örnek, ilk başta düşündüğüm kadar iyi değil. Kullanıcıyı istediğiniz gibi tam olarak çizilmeden önce bir başlık çubuğu gösterme etkisine sahip olan Window.FEATURE_CUSTOM_TITLE kullanıyorlar, gerçekten profesyonelce görünmüyor. İç çekmek. – user291701

+0

@Jake Wharton Bunu çözmeye çalışıyorum. 'Refresh' düğmesine basıldığında geri arama 'onOptionsItemSelected' denir. MartinS tarafından önerilen “setProgressBarIndeterminateVisibility” olarak adlandırıyoruz. –

+19

ActionBarSherlock kullanıyorsanız, setSupportProgressBarIndeterminateVisibility() kullandığınızdan emin olun. Aksi halde, ilerleme göstergeniz her zaman dönecek ve nedenini bilmeyeceksiniz. –

3

edin, şunu deneyin:

public class MainActivity extends ActionBarActivity { 

    boolean showUp=true; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     setContentView(R.layout.activity_main); 
     setSupportProgressBarIndeterminateVisibility(Boolean.TRUE); 

     Button b = (Button) findViewById(R.id.myButton); 
     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       if(showUp){ 
        setSupportProgressBarIndeterminateVisibility(Boolean.FALSE); 
       }else { 
        setSupportProgressBarIndeterminateVisibility(Boolean.TRUE); 
       } 
       showUp=!showUp; 
      } 
     }); 
} 
+0

"Window" hangi pakete aittir? – Hesam

+3

Destek kütüphanesi v21 bunu desteklemiyor, bu yüzden dikkatli olun. : //stackoverflow.com/questions/26443490/appcompat-show-progress-in-action-bar-causes-npe ve https://chris.banes.me/2014/10/17/appcompat-v21/#comment- 1642002459 – indyfromoz