2012-01-30 16 views
30

मैं एक्शनबार का उपयोग कर रहा हूं। अगर मैं इसे कताई के लिए सेट करता हूं तो मैं टाइटलबार पर रीफ्रेश प्रगति स्पिनर चाहता हूं - अन्यथा इसे छुपाएं। क्या यह संभव है ?:एक्शनबार पर प्रगति स्पिनर (रीफ्रेश) दिखाएं?

// 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); 

मैं इसे एक्शनबार पर नहीं चाहता जब तक कि यह "प्रगति पर नहीं है"/कताई।

धन्यवाद

कोई कोड टैग के लिए

उत्तर

75

क्षमा याचना, फोन से पोस्टिंग ...

यह ActionBarSherlock से है

(गूगल अगर आप इसे भर में नहीं आए हैं, पूर्व मधुकोश में ActionBar समर्थन की अनुमति देता है कि)

मुख्य गतिविधि के onCreate में

// 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); 

क्रिया बार में/छिपाने प्रगति दिखाने के लिए। ActionBarSherlock साथ सूचना आप boolean.TRUE/का उपयोग करना चाहिए गलत, बस सही/गलत नहीं .........

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

ठीक है धन्यवाद मैं थोड़ा सा खोदना होगा। एसडीके के साथ प्रदान किया गया नमूना उतना अच्छा नहीं है जितना मैंने शुरू में सोचा था। वे Window.FEATURE_CUSTOM_TITLE का उपयोग कर रहे हैं जिसका उपयोगकर्ता पूरी तरह से तैयार होने से पहले उपयोगकर्ता को टाइटलबार दिखाने का प्रभाव डालता है, यह वास्तव में गैर-व्यावसायिक दिखता है। आह। – user291701

+0

@ जेक व्हार्टन मैं इसे काम करने की कोशिश कर रहा हूं। जब 'ताज़ा करें' बटन दबाया जाता है तो कॉलबैक 'onOptionsItemSelected' कहा जाता है। मार्टिन एस द्वारा सुझाए गए अनुसार हम 'setProgressBarIndeterminateVisibility' कहां कॉल करते हैं। –

+19

यदि आप ActionBarSherlock का उपयोग कर रहे हैं, तो सुनिश्चित करें कि setSupportProgressBarIndeterminateVisibility() का उपयोग करना सुनिश्चित करें। अन्यथा, आपका प्रगति संकेतक हर समय स्पिन करेगा और आपको नहीं पता कि क्यों। –

3

आप एक ActionBarActivity तक फैली हुई हैं, तो यह प्रयास करें:

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

"विंडो" किस पैकेज से संबंधित है? – Hesam

+3

समर्थन लाइब्रेरी v21 इसका समर्थन नहीं करता है, इसलिए जागरूक रहें। देखें - http : //stackoverflow.com/questions/26443490/appcompat-show-progress-in-action-bar-causes-npe और https://chris.banes.me/2014/10/17/appcompat-v21/#comment- 1642002459 – indyfromoz

संबंधित मुद्दे