我在ListView上有一个活动,它有:
android:theme="@android:style/Theme.Dialog"
在清单中。当我打开它并且它在 ListView 中只有一行时,打开的窗口非常小。如何使窗口占据整个屏幕?
活动的 onCreate 方法中使用它以使其全屏显示。
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.myxml);
LayoutParams params = getWindow().getAttributes();
params.height = LayoutParams.MATCH_PARENT;
params.width = LayoutParams.MATCH_PARENT;
getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
}
我发现设置窗口大小确实有效,但您必须稍后再做。在此示例中,窗口宽度设置为显示宽度的 90%,并且以 onStart()
而不是onCreate()
完成:
@Override
protected void onStart() {
super.onStart();
// In order to not be too narrow, set the window size based on the screen resolution:
final int screen_width = getResources().getDisplayMetrics().widthPixels;
final int new_window_width = screen_width * 90 / 100;
LayoutParams layout = getWindow().getAttributes();
layout.width = Math.max(layout.width, new_window_width);
getWindow().setAttributes(layout);
}
类似于 PravinCG 的答案,但可以在 onCreate() 中用一行完成...
getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
在 setcontentview() 调用之前使用建议的代码。它会起作用。
只是一个小更新。用MATCH_PARENT,而不是已弃用的FILL_PARENT。PravinCG的回答对我来说很好用。
Yeezz !我想通了!问题是边距大小不是在窗口中计算的。因此,如果将布局边距设置为 0 并将该部分移动到布局的填充中,则问题将得到解决。