bugfix> android > 投稿

私は Progressbar を表示するためにこのコードを使用しています私の必要に応じて:

public class DelayedProgressDialog extends  DialogFragment
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
         setCancelable(false);
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
          ProgressDialog dialog = new ProgressDialog(getActivity());
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        dialog.setTitle(null);
        dialog.setContentView(R.layout._task);
        dialog.setIndeterminate(false);
        return dialog;
    }
}

xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >
    <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="@dimen/_100sdp"
        android:layout_height="@dimen/_100sdp"
        android:id="@+id/progressBar"
        android:layout_centerInParent="true"
        android:indeterminateTint="@android:color/white"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

今、問題は、これを呼び出すと、このフラグメントにカスタムプログレスバーが表示されないことです: タイトルなしで左側に通常のプログレスバーを表示し、中央に表示したいです。また、setContentviewを削除しても効果が得られない場合、つまりカスタムビューがこれに表示されないことを意味します。

回答 1 件
  • 基本的なダイアログ、たとえば Dialog を使用できます  クラスを作成し、レイアウトで設計したコンテンツビューを設定します(これは正しいようです)。 ProgressDialogを使用しているため、 ProgressBar に干渉している可能性があります  レイアウトで定義されたウィジェット。

    方法は次のとおりです。

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
        Dialog dialog = new Dialog(getActivity());
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        dialog.setTitle(null);
        dialog.setContentView(R.layout._task);
        dialog.setIndeterminate(false);
        return dialog;
    }
    
    

    また、DialogFragmentの代わりにDialogを試すこともできます。

    public void showProgressDialog() { 
       Dialog dialog = new Dialog(getActivity());
       dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
       dialog.setTitle(null);
       dialog.setContentView(R.layout._task);
       dialog.setIndeterminate(false);
       dialog.show();
    }
    
    

あなたの答え