使用Alertdialog更改后面的文本视图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Alertdialog更改后面的文本视图相关的知识,希望对你有一定的参考价值。
我正在使用AlertDialog
来显示游戏的结果。我的问题是,当对话框打开时,对话框似乎改变了我正常的activiymain
布局的描述。
这是没有对话框的布局
这是对话框打开时的布局
正如您所看到的,我用作按钮的Textviews很奇怪。我的对话框是这样创建的:
AlertDialog.Builder = new AlertDialog.Builder(MainActivity.this);
turnout.setTitle("Dialog");
mainactivity布局是相对布局,textviews以#ffffff(意为白色)着色
默认情况下,只要显示对话框,android就会使背景变暗(在对话框后面显示“灰色阴影”)。更改此默认行为可能会降低对话框的可读性并使用户感到困惑。
话虽这么说,您可以通过在对话框的样式中将参数android:backgroundDimEnabled
设置为false
来禁用背景。
您将主题添加到styles.xml:
<style name="NoDimAlertDialog" parent="ThemeOverlay.AppCompat.Dialog.Alert">
<item name="android:backgroundDimEnabled">false</item>
</style>
确保继承默认的AlertDialog
风格。
此外,您可以使用android:backgroundDimAmount
控制暗淡的透明度。此参数的值为0(无暗淡)到1(背景全黑)。默认情况下,Android似乎使用0.6。
<style name="LessDimAlertDialog" parent="ThemeOverlay.AppCompat.Dialog.Alert">
<item name="android:backgroundDimAmount">0.25</item>
</style>
接下来,将样式名称传递给MainActivity.java中的AlertDialog.Builder
构造函数:
new AlertDialog.Builder(this, R.style.NoDimAlertDialog)
.setTitle("Some title")
.setMessage("Some message")
.show();
您也可以考虑使用片段来显示您的AlertDialog。 Android为这种情况提供了方便的DialogFragment
类。您的案例中的简单DialogFragment可能如下所示:
class MyDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getContext(), R.style.NoDimDialog)
.setTitle("Some title")
.setMessage("Some message")
.create();
}
}
然后在MainActivity.java中添加Fragment:
new MyDialogFragment().show(getSupportFragmentManager(), "DialogTag");
以上是关于使用Alertdialog更改后面的文本视图的主要内容,如果未能解决你的问题,请参考以下文章
在 AlertDialog 正按钮上更改 textView 的可见性
AlertDialog 样式 - 如何更改标题、消息等的样式(颜色)