33

アンドロイド 2.3.3

Loading.. をテキストとして表示する進行状況ダイアログがあります。これが progressdialog のコードです。

progressDialog = new ProgressDialog(mContext);      
            progressDialog.setIndeterminate(true);
            progressDialog.setMessage("Loading...");
            progressDialog.show();

行を削除するprogressDialog.setMessage("Loading...");と、左側に進行状況ダイアログが表示され、右側に親の幅を占める空のボックスが表示されます。

中央に配置された progressdialog のみを表示したい。以下の画像を参照してください。

これは私が持っているものです...

ここに画像の説明を入力

これは私が欲しいものです...

ここに画像の説明を入力

誰かがこれで私を助けることができますか?

4

13 に答える 13

74

これを試してください 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();
}
于 2013-06-07T09:32:23.213 に答える
23

エラー" " が表示された場合requestFeature() must be called before adding contentの解決策は、 を呼び出すprogressDialog.show()前に を呼び出すことですprogressDialog.setContentView(R.layout.progressdialog)

于 2014-08-05T16:54:43.500 に答える
8

アクセントカラーを使用したマテリアルデザインの作業と見栄え(お持ちの場合)

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>

どこかに関数を作成します...たとえばUtils.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();
于 2015-07-28T10:30:36.343 に答える
7

以下のスタイルを 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 ファイルに任意の色を追加します。

于 2013-06-07T09:29:54.280 に答える
5

以下を使用できます。

Progress progress = new ProgressDialog(getActivity(), android.support.v4.app.DialogFragment.STYLE_NO_TITLE);

必要に応じて、Gradle の依存関係に追加します

compile 'com.android.support:support-v4:22.2.0'
于 2015-07-12T22:38:27.577 に答える
1

あなたが使用することができます:

progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

タイトルが必要ない場合は、次のことができます。

progressDialog.setTitle(null);
于 2013-09-20T10:06:02.233 に答える
1

これは、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);
    }
}

style.xmlTransparentProgressDialogに入れます:

@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();

それでおしまい。

于 2016-03-02T05:57:32.160 に答える
1

ProgressDialog の代わりに ProgressBar を使用します。 http://developer.android.com/reference/android/widget/ProgressBar.html

于 2013-06-07T09:14:15.867 に答える
0
ProgressDialog.show(this, null,"", true);
于 2017-07-19T21:32:07.810 に答える