我正在使用AlertDialog
来显示游戏结果。我的问题是,当对话框打开时,对话框似乎改变了我的正常activiymain
布局的描述。
这是没有对话框的布局
这是对话框打开时的布局
正如您所看到的,我用作按钮的Textviews很奇怪。 我的对话框是这样创建的:
AlertDialog.Builder = new AlertDialog.Builder(MainActivity.this);
turnout.setTitle("Dialog");
主要活动布局是相对布局,文本视图以#ffffff(意为白色)着色
答案 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");