在Android 2.3.3上使用Light Theme的AlertDialog

时间:2014-06-01 11:08:02

标签: android themes

我的应用程序使用的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"

如何使此对话框变亮?

2 个答案:

答案 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。