Android AlertDialog生成黑色背景黑色文本

时间:2014-10-09 21:02:17

标签: android

我在android API 10的对话框中遇到自定义视图的问题。

我使用AlertDialog.Builder构建对话框。我在构建器上使用setView命令包含一个自定义视图面板。

这适用于我测试过的大多数API。样式在不同设备之间有所变化,但这就是我想要的,因为样式与设备默认匹配。

我的问题是,在API 10上,我的自定义视图中的任何文本在黑色背景上显示为黑色。

我使用AlertDialog.Builder.setMessage()插入的任何文字都会正确显示。

对话框构建器用于确定文本外观的神奇属性/样式是什么?

我的应用主题是Theme.AppCompat.Light

这是我的onCreateDialog方法:

    public Dialog onCreateDialog(Bundle savedInstanceState) {
    LayoutInflater inflater = getActivity().getLayoutInflater();
    final View view = inflater.inflate(R.layout.fragment_status_dialog, null);
    mStatusTextView = (TextView) view.findViewById(R.id.text_status);
    mConnectedDeviceTextView = (TextView) view.findViewById(R.id.text_connected_device);

    MainService.ServiceState state = null;
    if (getArguments().containsKey(SERVICE_STATUS_ARG_KEY)) {
        state = (MainService.ServiceState) getArguments().getSerializable(SERVICE_STATUS_ARG_KEY);
    }
    setState(state);

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setView(view);
    builder.setMessage("This will show up just fine.");
    builder.setTitle(getString(R.string.status_title));
    builder.setNegativeButton(R.string.dialog_back_button_text, null);
    builder.setNeutralButton(R.string.dialog_connect_to_text, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            mListener.onDialogConnectTo();
        }
    });
    // Create the AlertDialog object and return it
    return builder.create();
}

这是我的fragment_status_dialog布局

    <?xml version="1.0" encoding="utf-8"?>

    <RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="18dp">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="@string/status_starting"
    android:id="@+id/text_status"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="@string/status_connected_to_unknown"
    android:paddingStart="4dp"
    android:paddingLeft="4dp"
    android:paddingRight="4dp"
    android:id="@+id/text_connected_device"
    android:layout_toRightOf="@+id/text_status"
    android:layout_toEndOf="@+id/text_status"/>
    </RelativeLayout>

注意,我已经尝试了https://stackoverflow.com/a/24505312/2350083,但它没有解决它。

ex

2 个答案:

答案 0 :(得分:2)

尝试拨打AlertDialog#setInverseBackgroundForced(true)

答案 1 :(得分:0)

如何简单地设置文本的颜色?例如:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@android:color/white"
    android:text="@string/status_starting"
    android:id="@+id/text_status"/>

TextView使用设备(或应用程序)的默认文本颜色。如果将颜色专门设置为TextView,则无论API如何,它都将在设备上覆盖。