使用LayoutInflator来创建一个占据整个屏幕的对话框。

18 浏览
0 Comments

使用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




0
0 Comments

问题的出现原因是调用了过时的LayoutParams.FILL_PARENT来设置对话框的宽度和高度。解决方法是使用LayoutParams.MATCH_PARENT来替代它,并且在调用builder.create()之前调用dialog.getWindow().setLayout()方法。以下是完整的解决方法:

// 在创建对话框之前调用下面的代码
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
// 创建对话框
builder.create();

这样就能够使用LayoutInflator创建一个占据整个屏幕的对话框了。

0