使用LayoutInflator来创建一个占据整个屏幕的对话框。
使用LayoutInflator来创建一个占据整个屏幕的对话框。
我正在为一个应用设计一个“关于”菜单,并在选项菜单中使用以下代码来生成它:\n
case DIALOG_ABOUT: builder = new AlertDialog.Builder(this); Context context = getApplicationContext(); LayoutInflater inflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.about_dialog, null); builder.setView(layout); TextView title = new TextView(this); title.setText(R.string.about_title); title.setGravity(Gravity.CENTER); title.setTextSize(20); builder.setCustomTitle(title); builder.setPositiveButton("OK", null); dialog = builder.create(); break;
\n我为关于菜单创建了两个不同的视图 - 用于横向和纵向查看。\n在纵向显示时,关于菜单看起来很好,但在横向显示时,文字的底部部分被切割掉了。我在使用LayoutInflator和View控件时,并不了解它们的工作原理,所以我假设它们当前正在填充一些Android指定的大小。\n我该如何创建一个占据整个屏幕或至少90%屏幕的对话框?\n编辑 - 我的布局如下:\n纵向布局:\n
\n横向布局:\n
问题的出现原因是调用了过时的LayoutParams.FILL_PARENT来设置对话框的宽度和高度。解决方法是使用LayoutParams.MATCH_PARENT来替代它,并且在调用builder.create()之前调用dialog.getWindow().setLayout()方法。以下是完整的解决方法:
// 在创建对话框之前调用下面的代码 dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); // 创建对话框 builder.create();
这样就能够使用LayoutInflator创建一个占据整个屏幕的对话框了。