0

我正在使用以下代码将 TextView 添加到对话框:

TextView alertView=new TextView(this);
alertView.setTextAppearance(this, android.R.style.TextAppearance_Medium);
alertView.setPadding(7, 7, 7, 7);
alertView.setText(Html.fromHtml(alertText));

Dialog dialog=new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(alertView);
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
dialog.show();

在 Android 4.0 中看起来还可以。但在 Android 2.1 中,Dialog 的背景是黑色的,TextView 的文本也是黑色的。如何解决?

4

4 回答 4

2

要为您的 设置整体样式,请Dialog在资源中定义样式。

例如:

<style name="MyDialog">
    <item name="android:windowNoTitle">false</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>

    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>

    <item name="android:windowBackground">@android:drawable/alert_light_frame</item>
</style>

然后将其设置为您的对话框,如下所示:

Dialog dialog=new Dialog(this, R.style.MyDialog);
于 2013-02-25T13:58:18.327 回答
1

问题是您的 TextView 正在使用您活动中的主题而不是对话框的主题。

您应该将对话框的上下文传递给 TextView 的构造函数:

对话框对话框=新对话框(此);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);

TextView alertView=new TextView( dialog.getContext() );
alertView.setTextAppearance(this, android.R.style.TextAppearance_Medium);
alertView.setPadding(7, 7, 7, 7);
alertView.setText(Html.fromHtml(alertText));

dialog.setContentView(alertView);
对话框.show();
于 2015-10-10T03:25:59.720 回答
0

我猜你将不得不创建一个自定义对话框。http://developer.android.com/guide/topics/ui/dialogs.html。这是自定义对话框的示例。http://www.mkyong.com/android/android-custom-dialog-example/

于 2013-02-25T13:58:29.647 回答
0

如果您可以将 textview 的颜色更改为白色,那么每个版本都可以,如果您需要黑色,则将 textview 背景颜色更改为白色

1.alertView.setTextColor(Color.WHITE);
2.alertView.setBackgroundColor(Color.white);
于 2013-02-25T13:59:50.557 回答