2012-05-20 73 views
24

是否有可能以顯示進度指示器(一來就是代替刷新按鈕的使用requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)節目?動作條進度指示器和刷新按鈕

的想法是工作,因爲Gmail客戶端不:當不加載顯示刷新按鈕和加載時顯示刷新按鈕的地方不確定微調框

回答

0

您可以嘗試以下操作:將刷新按鈕和不確定的微調框放在FrameLayout內,所以兩個都堆放在z平面,顯示在屏幕上的相同位置,然後你只需要玩可見性;當你想顯示刷新按鈕時,你設置s pinner隱形,按鈕可見。當您想要顯示微調器時,將其設置爲可見,並將按鈕設置爲不可見。

+0

我知道如何手動佈局,但我想在操作欄中執行此操作。 – lujop

+2

難道我的回答對你有用嗎?你甚至沒有對此發表評論。 :) – tasomaniac

+0

是否可以與廣播意圖交換? – Maxrunner

52

是的,你可以這樣做,很容易。

private MenuItem refresh; 
. 
. 
. 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.options_menu, menu); 

    // refresh menu item 
    refresh = menu.findItem(R.id.refresh_option_item); 

    return super.onCreateOptionsMenu(menu); 
} 

你必須得到像上面,然後您刷新菜單項,就可以使紡紗項目如下圖所示:

refresh.setActionView(R.layout.actionbar_indeterminate_progress); 

,當你任務完成後,您可以禁用紡象下面這樣:

refresh.setActionView(null); 

最後,該actionbar_indeterminate_progress.xml可以是這樣的:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="64dp" 
    android:layout_height="wrap_content" 
    android:gravity="center"> 
    <ProgressBar android:layout_width="32dp" 
     android:layout_height="32dp" 
     android:layout_gravity="center" 
     style="?android:attr/indeterminateProgressStyle" /> 
</FrameLayout> 
+1

與此問題是,有時該引用爲空,你會得到n。不知道如何重現它,但它發生在我身上。我用同樣的方法...... – gwa

+0

我至少沒有發生過一次。當你的菜單被創建時,刷新變量被創建。用戶單擊該刷新按鈕意味着它當然是早些時候創建的。 – tasomaniac

+1

隨着一些改編,它的作品就像一個魅力!它比默認的車輪更好。 –