2011-05-11 66 views
4

我有ListView中有一个活动:Theme.Dialog创建太小屏幕

android:theme="@android:style/Theme.Dialog" 
在清单

。 当我打开它并且它在ListView中只有一行时,打开的窗口非常小。 如何让窗户占据整个屏幕?

回答

7

在Activity的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); 
    } 
+0

解决方案不起作用。也许这是由于ListView的对话框主题?有任何想法吗? – OkyDokyman 2011-05-11 20:03:34

+0

谢谢!我的活动(通过Manifest看起来像是一个对话框)有一个相当复杂的LinearLayout,只显示几个字母的宽度。但哇,它为我工作!但为什么? – 2012-10-19 05:48:21

+0

这不行! – JaydeepW 2014-04-18 05:42:00

1

从PravinCG答案相似,但它可以用一个线的onCreate()来完成...

getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
+0

解决方案无法正常工作。也许这是由于ListView的对话框主题?有任何想法吗? – OkyDokyman 2011-05-11 20:03:44

0

使用的setContentView()调用之前建议的代码。它会工作。

3

我发现设置窗口大小确实有效,但您必须稍后再做。在此实例中的窗口宽度被设置为显示宽度的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); 
} 
0

只是一个小的更新。使用MATCH_PARENT而不是已弃用的FILL_PARENT。 PravinCG的答案对我很好。

0

Yeezz!我想到了 !问题是边距大小不在窗口widht中计算。所以,如果您将布局边距设置为0并将该部分移至布局的填充处,则问题将得到解决。