3

我有一个自定义的 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 上显示的那样在所有设备上显示自定义警报对话框?

我见过这个,但似乎无法弄清楚。

有什么解决办法吗?

4

3 回答 3

8

AlertDialog.Builder#setInverseBackgroundForced(true)创建对话框时尝试调用。

于 2013-06-25T18:02:47.270 回答
1

您可以为此目的使用ActionBarSherlock

检查对话框主题页面中的描述

于 2012-09-04T10:15:31.810 回答
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();

请参阅文档:

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

于 2014-09-07T19:40:59.893 回答