Android 2.3.3
Loading ..をテキストとして表示する進捗ダイアログがあります。 progressdialogのコードは次のとおりです。
_progressDialog = new ProgressDialog(mContext);
progressDialog.setIndeterminate(true);
progressDialog.setMessage("Loading...");
progressDialog.show();
_
行progressDialog.setMessage("Loading...");
を削除すると、親の幅を占める左側の進捗ダイアログと右側の空のボックスが表示されます。
中央に配置されたprogressdialogのみを表示したい。以下の画像を参照してください。
これは私が持っているものです...
これは私が欲しいものです...
誰かがこれで私を助けることができますか?
これを試してください1.次のようなメソッドを作成します:
public static ProgressDialog createProgressDialog(Context context) {
ProgressDialog dialog = new ProgressDialog(context);
try {
dialog.show();
} catch (BadTokenException e) {
}
dialog.setCancelable(false);
dialog.getWindow()
.setBackgroundDrawable(new ColorDrawable(Android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.progressdialog);
// dialog.setMessage(Message);
return dialog;
}
// XMLレイアウト:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@Android:color/transparent" >
<ProgressBar
Android:id="@+id/progressBar1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true" />
</RelativeLayout>
必要な場所でこのメソッドを呼び出します:
if (progressDialog == null) {
progressDialog = Utils.createProgressDialog(Login.this);
progressDialog.show();
} else {
progressDialog.show();
}
偶然error: "requestFeature() must be called before adding content
"を取得した場合、解決策はprogressDialog.show()
を呼び出す前にprogressDialog.setContentView(R.layout.progressdialog)
を呼び出すことです。
以下のスタイルをstyle.xmlに追加できます
<style name="progress_bar_style">
<item name="Android:windowFrame">@null</item>
<item name="Android:windowBackground">@Android:color/transparent</item>
<item name="Android:windowIsFloating">true</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="Android:windowTitleStyle">@null</item>
<item name="Android:windowAnimationStyle">@Android:style/Animation.Dialog</item>
<item name="Android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="Android:backgroundDimEnabled">false</item>
<item name="Android:background">@Android:color/transparent</item>
</style>
color.xmlファイルで任意の色を追加します。
アクセントカラーを使用したマテリアルデザインでの作業と見栄え(お持ちの場合)
5.0以降のAPIバージョンの両方で動作するように努力しました。そして、解決策は、進捗ではなくダイアログでそれを作ることです。
レイアウトフォルダーにファイルを作成しますaux_progress_spinner.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@Android:color/transparent"
Android:gravity="center"
Android:orientation="vertical" >
<ProgressBar
Android:id="@+id/progressBar1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@Android:color/transparent"
/>
</LinearLayout>
どこかに関数を作成します... tils.class
public static Dialog LoadingSpinner(Context mContext){
Dialog pd = new Dialog(mContext, Android.R.style.Theme_Black);
View view = LayoutInflater.from(mContext).inflate(R.layout.aux_progress_spinner, null);
pd.requestWindowFeature(Window.FEATURE_NO_TITLE);
pd.getWindow().setBackgroundDrawableResource(R.color.transparent);
pd.setContentView(view);
return pd;
}
フラグメント/アクティビティ呼び出し:
private Dialog progress_spinner;
progress_spinner = Utils.LoadingSpinner(mContext);
//------ Where you want it ------
progress_spinner.show();
//------- Dismiss it --------
progress_spinner.dismiss();
オプション:単純なCountDownTimerを追加して、外観をテストします
new CountDownTimer(1000,1000){
@Override public void onTick(long millisUntilFinished) {
}
@Override public void onFinish() {
progress.dismiss();
}
}.start();
次を使用できます。
Progress progress = new ProgressDialog(getActivity(), Android.support.v4.app.DialogFragment.STYLE_NO_TITLE);
必要に応じて、Gradleの依存関係に追加します
compile 'com.Android.support:support-v4:22.2.0'
あなたが使用することができます:
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
また、タイトルが必要ない場合は、次のことができます。
progressDialog.setTitle(null);
MuraliGanesanの答えは正しいですが、ProgressDialogではなくDialogのみを使用して「コンテンツを追加する前にrequestFeature()を呼び出す必要がある」という例外を回避します
これを行うには、Dialogクラスを拡張する1つのクラスを作成するだけです。
クラスの下に作成したとしましょう:
public class TransparentProgressDialog extends Dialog {
public ImageView iv;
public TransparentProgressDialog(Context context, int resourceIdOfImage) {
super(context, R.style.TransparentProgressDialog);
WindowManager.LayoutParams wlmp = getWindow().getAttributes();
wlmp.gravity = Gravity.CENTER_HORIZONTAL;
getWindow().setAttributes(wlmp);
setTitle(null);
setCancelable(false);
setOnCancelListener(null);
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
iv = new ImageView(context);
iv.setImageResource(resourceIdOfImage);
layout.addView(iv, params);
addContentView(layout, params);
}
@Override
public void show() {
super.show();
RotateAnimation anim = new RotateAnimation(0.0f, 360.0f , Animation.RELATIVE_TO_SELF, .5f, Animation.RELATIVE_TO_SELF, .5f);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(3000);
iv.setAnimation(anim);
iv.startAnimation(anim);
}
}
TransparentProgressDialog
をstyle.xmlに配置します。
@null @Android:color/transparent true @null @null @Android:style/Animation.Dialog stateUnspecified | adjustPan true @Android:color/transparent
これで、循環する任意の進行イメージを配置できます。
TransparentProgressDialog pDialog = new TransparentProgressDialog(mContext, R.drawable.progress);
pDialog.show();
それでおしまい。
ProgressDialogの代わりにProgressBarを使用します。 http://developer.Android.com/reference/Android/widget/ProgressBar.html
MuraliGanesanの回答に基づいて、progressDialogのサブクラスを作成しました。
public class LoadingDialog extends ProgressDialog {
public LoadingDialog(Context context) {
super(context);
}
@Override
public void show() {
super.show();
setCancelable(false);
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
setContentView(R.layout.custom_progress_dialog);
}
}
また、res/layoutにcustom_progress_dialog.xmlを作成する必要があります
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@Android:color/transparent"
Android:layout_gravity="center">
<ProgressBar
Android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true" />
</RelativeLayout>
そして、次のように簡単に使用できます。
LoadingDialog dialog = new LoadingDialog(this);
dialog.show();
:
:
dialog.dismiss();
MonoDroidでのこの作業:
progressDialog.SetMessage((string)null);
Javaでこれを試してください。
progressDialog.setMessage(null);
ProgressDialog.show(this, null,"", true);