読者です 読者をやめる 読者になる 読者になる

【Android】ダイアログのテーマ変更

 

ダイアログのテーマを変更したいときってありますよね。

 

私的にいちばん多いのは、

画面の背景を半透明(Activity)にして、

ダイアログを表示する場合です。

 

 

f:id:stanleyblenz:20161010195001p:plain

 

この場合、

Activityを半透明にするために、スタイルを以下の感じにします。

 

styles.xml

<resources>

  <!-- 半透明-->

  <drawable name="colorcode">#7f000000</drawable>
  <style name="SubTheme" parent="android:style/Theme.Translucent">

      <item name="android:windowBackground">@drawable/colorcode</item>

   <item name="android:windowNoTitle">true</item>
</style>
</resources> 

 

ただし、これだけでは、このActivityで実装しているAlertDialogも

Activityのテーマと同じになってしまいます。

 

そこでダイアログのテーマを変更するやり方です。

styles.xml

<resources>

  <!-- 半透明-->

  <drawable name="colorcode">#7f000000</drawable>
  <style name="SubTheme" parent="android:style/Theme.Translucent">

      <item name="android:windowBackground">@drawable/colorcode</item>

   <item name="android:windowNoTitle">true</item>
</style>

  <!--ダイアログ-->
  <style name="AlertTheme" parent="android:Theme.Material.Light">
  </style>
</resources>

 

SubActivity.java

AlertDialog.Builder alert = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.AlertTheme));
alert.setTitle("登録完了");
alert.setMessage("登録が完了しました。");
alert.setPositiveButton( "OK", this);
alert.create().show(); 

 

以上、ダイアログのテーマを変更することができます。