web-dev-qa-db-ja.com

カスタムProgressDialog androidの使用

アプリケーションでカスタムProgressDialogを使用しています。カスタムにできますが、progressDialogの上部の境界線またはウィンドウも削除したいです。 styles.xml私はcustomDialogを次のように定義します

<style name="AppTheme" parent="Android:Theme.Light" />

<style name="CustomDialog" parent="@Android:style/Theme.Dialog">
    <item name="Android:background">#7BC047</item>
    <item name="Android:textColor">#FFFFFF</item>
    <item name="Android:windowBackground">@null</item>
     <item name="Android:windowFrame">@null</item>
</style>

親ウィンドウを削除するには、windowBackgroundをnullに、windowFrameをnullに設定していますが、うまくいきませんでした。現在、私のカスタムの進行状況ダイアログは、下の画像のように見えますenter image description here

このコードを使用して、progressDialogのスタイルを設定しています。

 private void showProgressDialog() {
    progressDialog = new ProgressDialog(this,R.style.CustomDialog);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    progressDialog.setMessage("Logging in. Please wait.");
    progressDialog.show();
}

それで、この問題に関して私を助けてください、どんな助けも本当に感謝されるべきです。

17
waqas satti

この回答は、質問に記載されている問題を解決するものではありませんが、カスタムの進行状況ダイアログを実装する方法を検索する場合、これはSOを指す唯一のリンクです。そうは言っても、特定のMaksym Dybarskyiこれについて リンク

すべてのクレジットは、私ではなく作成者に送られます。ただ共有するだけです

これを依存関係に追加するだけです。

dependencies {
...
   compile 'com.github.d-max:spots-dialog:0.4@aar'
}

そして、カスタムスタイル:

<style name="Custom" parent="Android:Theme.DeviceDefault.Dialog">
    <item name="DialogTitleAppearance">@Android:style/TextAppearance.Medium</item>
    <item name="DialogTitleText">Please Wait</item>
    <item name="DialogSpotColor">@Android:color/holo_orange_dark</item>
    <item name="DialogSpotCount">8</item>
</style>

最後に、コードでこれを行います。

private AlertDialog progressDialog;
progressDialog = new SpotsDialog(mContext, R.style.Custom);

//Am using it in an AsyncTask. So in  my onPreExecute, I do this:
public void onPreExecute() {
  super.onPreExecute();
  progressDialog.show();
  ...
 }

//dismiss in onPostExecute
public void onPostExecute(){
   progressDialog.dismiss();
 } 

結果:

enter image description here

黄色のドットは左から右に移動し、スタイルのドット数を変更できます

24

私は答えるのがかなり遅れていることを知っていますが、どんな方法でも答えます。

Dialog dialog = new  Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_login);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Android.graphics.Color.TRANSPARENT));
16
Khawar

進捗ダイアログのコンストラクタでアクティビティ名を使用しているかどうかを確認するだけで、

 progressDialog = new ProgressDialog(Activity.this,R.style.CustomDialog);

これをスタイルに追加

<item name="Android:background">@Android:color/transparent</item>

<item name="Android:windowBackground">@Android:color/transparent</item>
1
ajmal

これをstyles.xmlCustomDialogに追加します:

<item name="Android:alertDialogStyle">@style/CustomAlertDialogStyle</item>

そして、このstyle

 <style name="CustomAlertDialogStyle" >
    <item name="Android:bottomBright">@Android:color/transparent</item>
    <item name="Android:bottomDark">@Android:color/transparent</item>
    <item name="Android:bottomMedium">@Android:color/transparent</item>
    <item name="Android:centerBright">@Android:color/transparent</item>
    <item name="Android:centerDark">@Android:color/transparent</item>
    <item name="Android:centerMedium">@Android:color/transparent</item>
    <item name="Android:fullBright">@Android:color/transparent</item>
    <item name="Android:fullDark">@Android:color/transparent</item>
    <item name="Android:topBright">@Android:color/transparent</item>
    <item name="Android:topDark">@Android:color/transparent</item>
</style>
1
Alaa M.

これは上記の質問に対する適切な答えではないかもしれません。しかし、これは興味深いので、ここに追加することを考えました。

(現在の評判についてコメントできません)

これを確認してください link

元の作者はデフォルトの読み込みダイアログの代わりにgifを追加しており、改善があればニースの代替品になると思います。

0
rochaa.p

アプリケーションでカスタムProgressDialogを使用しています。そのためには、次の手順を実行する必要があります。

step-1xmlレイアウトを作成する_custom_progress.xml_

_<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:padding="@dimen/dp_size_10"
    Android:layout_height="match_parent">
<ProgressBar
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_centerHorizontal="true"
    Android:indeterminateTint="@color/colorPrimary"
    Android:layout_centerInParent="true"/>
</RelativeLayout>
_

step-2Javaファイルを作成します。

_package com.example.customeprogress;
import Android.app.Dialog;
import Android.content.Context;
import Android.view.Gravity;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.WindowManager;

public class CustomProgressDialogue extends Dialog {
    public CustomProgressDialogue(Context context) {
        super(context);

        WindowManager.LayoutParams wlmp = getWindow().getAttributes();

        wlmp.gravity = Gravity.CENTER_HORIZONTAL;
        getWindow().setAttributes(wlmp);
        setTitle(null);
        setCancelable(false);
        setOnCancelListener(null);
        View view = LayoutInflater.from(context).inflate(
                R.layout.custom_progress, null);
        setContentView(view);
    }
}
_

step-3アクティビティでこのカスタムクラスのオブジェクトを作成しますJavaクラスで、次のように初期化してオブジェクトを使用しますshow()またはdismiss()の場合

CustomProgressDialogue object = new CustomProgressDialogue(this);

を使用してこのダイアログを表示します。

object.show();そして、object.dismiss();を使用してそれを却下しました。

出力の結果。 こちらをご覧ください

0
Deepak gupta
<style name="CustomDialog" parent="Theme.AppCompat.Light.Dialog">
   <item name="Android:background">#7BC047</item>
   <item name="Android:textColor">#FFFFFF</item>
   <item name="Android:windowBackground">@color/colorTransparent</item>
</style>

これは私のために仕事をしました。

0
Tsar