web-dev-qa-db-ja.com

テーマをProgressDialogに設定する方法

ProgressDialogのテーマを設定したいと思います。それを作成するには、次のコードを使用します。

progressDialog = ProgressDialog.show(this, "Please Wait", "Loading dictionary file....", true, false);

書けない

progressDialog = new ProgressDialog(...);
progressDialog.(do_sth_with_dialog);
progressDialog.show(...)

show()メソッドは静的であり、コンパイラの警告が表示されるためです。のような利用可能な定数を使用する方法はありますか

progressDialog.THEME_HOLO_DARK 

ダイアログテーマを設定するには?

また、ダイアログの背景を変更して角を丸くしたいと思います(progressDialog内にあるProgressBarで何も変更したくないです。ここには多くのチュートリアルがありますが、通常、progressDialogクラスを拡張する新しいクラスの作成方法について説明しています。

progressDialogのテーマと背景色を設定する簡単な方法はありますか?
定数を使用できない場合、progressDialog.THEME_HOLO_DARKなどの定数にアクセスできるのはなぜですか?

16
Marek

ProgressDialog.show()は静的メソッドであるため、プロパティを設定できるProgressDialogのクラスインスタンスを取得しません。

ProgressDialogインスタンスを取得するには:

// create a ProgressDialog instance, with a specified theme:    
ProgressDialog dialog = new ProgressDialog(mContext, ProgressDialog.THEME_HOLO_DARK);
// set indeterminate style
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// set title and message
dialog.setTitle("Please wait");
dialog.setMessage("Loading dictionary file...");
// and show it
dialog.show();

EDIT 8/2016:非推奨のテーマに関するコメントについては、styles.xmlを使用して、ベーステーマから継承することもできます。例:

<style name="MyProgressDialog" parent="Theme.AppCompat.Dialog">
</style>

これを行う方法の詳細はすでに他の場所で広くカバーされています https://developer.Android.com/guide/topics/ui/themes.html から始めます。

(私の意見では)テーマとstyles.xmlを使用する方が、ProgressDialogをインスタンス化するときにテーマをハードコーディングする(つまり、一度設定してそれを忘れる)よりも、はるかにクリーンでメンテナンスが簡単です。

その後、あなたはただ行うことができます

new ProgressDialog(mContext);

そして、あなたのグローバルなテーマ/スタイルにスタイリングを提供させてください。

28
CSmith

申し訳ありません。私は今働いています。完全な詳細を示すことはできません。しかし、ここに答えがあります。

ProgressDialog progressDialog;

if(Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.HONEYCOMB){
   progressDialog = new ProgressDialog(new ContextThemeWrapper(context, Android.R.style.Theme_Holo_Light_Dialog));
}else{
   progressDialog = new ProgressDialog(context);
}

progressDialog.setMessage("Loading....");
progressDialog.show();
12
JeffMeJones
dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.item_dialog);
0
hm7

ProgressDialogを膨らませることはできません。

非同期タスクの実行中にできることは、Dialogクラスから継承して作成できるカスタムダイアログを表示することです。

進行状況ダイアログの背景画像の設定方法もご覧ください

0
Adil