DialogFragment の style を変更する

DialogFragment のスタイルを変える。アプリ全体のスタイルとは異なるものを使う場合、
res/values/styles.xml で、Dialog で使う style を追加する。

アプリのテーマが、 Holo で、ダイアログを Holo.Light にする。

<style name="DialogThemeHoloLight" parent="android:style/Theme.Holo.Light.Dialog"></style>


この追加だけで、Dialog に style を適用すると以下のように周りが残ってしまう。

f:id:posturan:20160313192439p:plain


windowBackground で透明を指定しないといけない。


<style name="DialogThemeHoloLight" parent="android:style/Theme.Holo.Light.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

これで、以下のように表示できる。

f:id:posturan:20160313192431p:plain



DialogFragment で、style の指定は onCreateDialog で行う。

public class SpinnerProgressDialogFragment extends DialogFragment{

   private static ProgressDialog progressDialog;

   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState){

      if (progressDialog != null) return progressDialog;
      progressDialog = new ProgressDialog(getActivity(), R.style.DialogThemeHoloLight);
          :
         省略
          :
      return progressDialog;
   }
   @Override
   public Dialog getDialog(){
      return progressDialog;
   }
   @Override
   public void onDestroy(){
      super.onDestroy();
      progressDialog = null;
   }
}