正如标题所说,我正在使用 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,但它没有很多自定义。事实上,它只支持颜色,我不确定如何设置文本颜色(标题和/或消息)。