2010-08-23 161 views
66

我的應用程序需要編程創建一個小的progressBar。 ProgressBar沒有設置樣式的方法(我想要一個小的 progressBar)。構造函數可以採用AttributeSet,但它是一個接口,並要求我實現一組函數。有沒有方法 設置progressBar小風格? (我不能使用XML創建 進度)如何以編程方式創建ProgressBar?

回答

159

大多數情況下,如果您手動提供AttributeSet,則必須使用Android的其中一個。幸運的是,他們公開了描述一個小進度條的屬性集。使用此代碼:

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall); 
+0

這使得進度條看起來像是舊的而不是薄的藍色(新的)。 – 2013-07-22 17:30:27

+6

@ kilaka只是爲了將來的參考,將android.r.attr.progressBarStyleSmall更改爲android.R.attr.progressBarStyleHorizo​​ntal爲新的一個:) – ElaGorilaki 2014-05-03 16:11:16

+1

@BabyGorilla並沒有progressBarStyleHorizo​​ntal工作在所有的Android版本?! – 2014-07-04 12:34:54

9

與所需的進度條containig所有創建資源佈局xml文件/目錄佈局屬性,你需要:

<?xml version="1.0" encoding="utf-8"?> 
<ProgressBar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" ... /> 

下一頁在活動類,你可以從該佈局創建ProgressBar對象:

LayoutInflater inflater = getLayoutInflater(); 
    ProgressBar bar = (ProgressBar) inflater.inflate(R.layout.small_progress_bar, null); 

其中R.layout.small_progress_bar鏈接到您的佈局xml文件。

你還不能使用xml文件嗎?

+123

他以編程方式表示。 – 2012-04-18 02:30:37

+0

您可以將contentview設置爲此進度條,並在數據變冷時更改佈局,而不是手動充氣。 – amalBit 2014-04-08 12:23:45

-3

的完整代碼添加進度條下面的方法編程

private ProgressDialog mProgressDialog; 
    mProgressDialog = new ProgressDialog(this); 
    mProgressDialog.setMessage("Signing........"); 
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    mProgressDialog.setCancelable(false); 

來電顯示欄下方

mProgressDialog.show(); 

調用隱藏棒

mProgressDialog.dismiss(); 
+1

雖然類似,但這是ProgressDialog,而不是ProgressBar。 OP可能不希望爲他的進度指示器進行對話。 – Parker 2017-06-17 13:50:05

+0

此ProgressDialog現已在Android 26中棄用 – 2017-10-30 05:30:29