使用Alertdialog更改后面的文本视图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Alertdialog更改后面的文本视图相关的知识,希望对你有一定的参考价值。

我正在使用AlertDialog来显示游戏的结果。我的问题是,当对话框打开时,对话框似乎改变了我正常的activiymain布局的描述。

这是没有对话框的布局

enter image description here

这是对话框打开时的布局

enter image description here

正如您所看到的,我用作按钮的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 样式 - 如何更改标题、消息等的样式(颜色)

根据 alertdialog 选项更改卡片颜色

如何从 alertdialog 更改 mainactivity 中的可见性编辑文本

如何动态更改 AlertDialog 的布局和字段

AlertDialog 的轻主题?