タイトルが示すように、私は actionBarSherlock ライブラリとライト テーマを使用しており、alertDialog.Builder クラスを使用してダイアログを表示する必要がある場合があります。
何を試しても、テーマはダイアログ自体には適用されません。テーマは、新しい API と古い API (ハニカムより前) の両方で動作するはずです。
例:
コード:
final AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(activity,
R.style.AppTheme_LightDialog));
また:
final AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(activity,
R.style.Theme_Sherlock_Light_Dialog));
xml:
<style name="AppTheme_LightDialog" parent="@android:style/Theme.Light">
<item name="android:windowFrame">@null</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle.Sherlock.Light</item>
<item name="android:windowBackground">@drawable/abs__dialog_full_holo_light</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimAmount">0.6</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:textColorPrimary">@color/abs__primary_text_holo_light</item>
<item name="android:textColorPrimaryInverse">@color/abs__primary_text_holo_dark</item>
<item name="windowMinWidthMajor">@dimen/abs__dialog_min_width_major</item>
<item name="windowMinWidthMinor">@dimen/abs__dialog_min_width_minor</item>
<item name="windowActionBar">false</item>
<item name="windowContentOverlay">@null</item>
<item name="android:textAppearance">?android:attr/textAppearanceInverse</item>
</style>
dialogFragment を使用できることはわかっていますが、別の方法はありますか? ダイアログは非常にシンプルで、多数あるため、すべてを変更するのは面倒です。
編集:私は間違っているかもしれませんが、android:alertDialogStyle 属性 (ここに表示) を使用すると古い API 用に変更されるようですが、多くのカスタマイズはありません。実際、それは色しかサポートしておらず、(タイトルやメッセージの)テキストの色を設定する方法さえわかりません。