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

问题描述 投票:1回答:1

我正在使用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 layout alertdialog
1个回答
0
投票

默认情况下,只要显示对话框,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");
© www.soinside.com 2019 - 2024. All rights reserved.