Android custom alertdialog отличается от ICS и Gingerbread

У меня есть настраиваемый alertdialog, который раздувает этот настраиваемый макет:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/infoLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:theme="@style/AppTheme" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:weightSum="2" > <TextView android:id="@+id/infoVersionTitle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right|center" android:text="@string/infoVersion" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/infoVersionTitleValue" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout> <TextView android:id="@+id/infoDetailText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/linearLayout1" android:padding="10dp" /> </RelativeLayout> 

У меня это в моем файле манифеста:

 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> ........ <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > 

И у меня есть style.xml, который определяется следующим образом:

 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppTheme" parent="android:Theme.Light"></style> </resources> 

Style.xml v11 определяется следующим образом:

 <resources> <style name="AppTheme" parent="android:Theme.Light"></style> </resources> 

И style.xml v14 определяется следующим образом:

 <resources> <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar" /> </resources> 

При запуске на устройстве 4.0.3 это выглядит так:

Введите описание изображения здесь

И работая на устройстве 2.3.3, он выглядит следующим образом:

Введите описание изображения здесь

На 2.3.3 устройствах текст почти нечитабелен, и я хочу показать белый фон (включая заголовок)

Можно ли создать обычное showdialog show на всех устройствах, как показано на 4.0.3?

Я видел это, но, похоже, не понял его.

Любые решения?

Вы можете использовать ActionBarSherlock для этой цели

Проверьте описание на странице Theming для диалога

Попробуйте вызвать AlertDialog.Builder#setInverseBackgroundForced(true) при создании своего диалога.

Для обеспечения совместимости для всех устройств:

 setInverseBackgroundForced(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? false : true) 

Это гарантирует, что устройства ниже HoneyCromb отображаются нормально, а приведенные ниже устройства инвертируются!

Вот пример:

 final AlertDialog.Builder dialog = new AlertDialog.Builder(this) dialog.setInverseBackgroundForced(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? false : true); dialog.setMessage("Test Dialog!"); dialog.create().show(); 

См. Документы:

http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setInverseBackgroundForced(boolean)