我有一个自定义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设备上,文字几乎不可读,我想显示白色背景(包括标题栏)
是否可以在4.0.3上显示的所有设备上显示自定义alertdialog?
我看过this,但似乎无法弄明白。
任何解决方案?
答案 0 :(得分:8)
在创建对话框时尝试调用AlertDialog.Builder#setInverseBackgroundForced(true)
。
答案 1 :(得分:1)
您可以将ActionBarSherlock用于此目的
在Theming页面中查看对话框
中的说明答案 2 :(得分:0)
确保所有设备的兼容性:
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();
参见文档: