我正在使用以下代码将TextView添加到Dialog:
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的文本也是黑色的。如何解决?
答案 0 :(得分: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);
答案 1 :(得分:1)
问题是你的TextView正在使用你活动中的主题而不是对话框的主题。
您应该将对话框的上下文传递给TextView的构造函数:
Dialog dialog=new Dialog(this); 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); dialog.show();
答案 2 :(得分:0)
我猜你必须创建一个自定义对话框。 http://developer.android.com/guide/topics/ui/dialogs.html。这是自定义对话框的示例。 http://www.mkyong.com/android/android-custom-dialog-example/
答案 3 :(得分:0)
如果您可以将textview的颜色更改为白色,那么每个版本都可以,如果需要黑色,则将textview背景颜色更改为白色
1.alertView.setTextColor(Color.WHITE);
2.alertView.setBackgroundColor(Color.white);