我的应用程序使用的Holo Light工作正常,也适用于2.3.3。但是当涉及到AlertDialog时, 2.3.3对话框仍然很暗。 我在ContextThemeWrapper上尝试了不同的主题,但它们都不起作用。
这是我在onCreateDialog中创建构建器的代码:
ContextThemeWrapper context = new ContextThemeWrapper(getActivity(), android.R.style.Theme_Light);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
View view = inflater.inflate(R.layout.mydialog, null);
builder.setView(view)
.setTitle(getActivity().getString(R.string.MyDialogCaption));
return builder.create();
我尝试了主题的不同值,甚至是AppCompat库中的值,但对话框仍然很暗。所有活动都很轻松,如AndroidManifest中所定义:
android:theme="@style/Theme.AppCompat.Light"
如何使此对话框变亮?
答案 0 :(得分:0)
简而言之,android 2.3没有AlertDialog.Light主题。 所以我认为你无论如何都不会在android 2.3上使用系统的轻型AlertDialog。
如果您为视图设计了一个好的主题,例如R.style.light。 我建议你使用
LayoutInflater.from(new ContextThemeWrapper(getActivity(), R.style.light))
获得inflater。
对我来说,我只是在android 2.3上使用黑暗的对话框主题。如果你想申请你的灯光主题,你可以这样做:
1)。定义一个AlertDialog.Light(其他名称可以),在api-14中包含以下项目作为AlertDialog.Holo.Light。 (参考:http://developer.android.com/reference/android/R.styleable.html#AlertDialog)
<item name="android:fullDark"></item>
<item name="android:topDark"></item>
<item name="android:centerDark"></item>
<item name="android:bottomDark"></item>
<item name="android:fullBright"></item>
<item name="android:topBright"></item>
<item name="android:centerBright"></item>
<item name="android:bottomBright"></item>
<item name="android:bottomMedium"></item>
<item name="android:centerMedium"></item>
2)。定义你的主题,并引用对话框主题
<item name="android:alertDialogStyle"></item>
但是我认为,让android 2.3中的alertdialog变暗,因为它需要太多的自定义。 当我尝试在xprivacy中修复android 2.3 light主题时,这是提交: https://github.com/liudongmiao/XPrivacy/commit/13762c
答案 1 :(得分:0)
您可以使用此项目: AlertDialogPro 。由于AlertDialogPro的API与AlertDialog完全相同,因此您不需要做太多工作。只需将它包含在您的项目中,只需将AlertDialog更改为AlertDialogPro:
自:
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
要:
AlertDialogPro.Builder builder = new AlertDialogPro.Builder(getContext());
并使用属性&#34; alertDialogProTheme&#34;
为您应用的主题指定AlertDialogProTheme.Holo.Light
主题
<style name="AppTheme" parent="AppBaseTheme">
...
<item name="alertDialogProTheme">@style/AlertDialogProTheme.Holo.Light</item>
</style>
然后,您可以在Android的所有版本中拥有 Holo light AlertDialog。