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

时间:2016-11-16 10:14:14

标签: android layout alertdialog

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

这是没有对话框的布局

enter image description here

这是对话框打开时的布局

enter image description here

正如您所看到的,我用作按钮的Textviews很奇怪。 我的对话框是这样创建的:

AlertDialog.Builder = new AlertDialog.Builder(MainActivity.this);
turnout.setTitle("Dialog");

主要活动布局是相对布局,文本视图以#ffffff(意为白色)着色

1 个答案:

答案 0 :(得分: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

中添加片段
new MyDialogFragment().show(getSupportFragmentManager(), "DialogTag");