Android 在第一次显示之前获取屏幕高度?

Android 在第一次显示之前获取屏幕高度?,android,android-listview,Android,Android Listview,我有一个列表视图。我用8个项目填充它,这就是G1上垂直适合的所有项目。我的一些用户说Droid的屏幕高度更高,因此我可能可以在ListView中添加一到两个项目,以占用提供的额外空间 在显示UI之前,如何测量启动时屏幕提供的可用高度?如果我看到高度可以容纳8个以上的项目,我想再添加一行或两行。我同意上面的评论,但如果你真的想走这条路,请尝试以下方法: Display display = getWindowManager().getDefaultDisplay(); int width = dis

我有一个列表视图。我用8个项目填充它,这就是G1上垂直适合的所有项目。我的一些用户说Droid的屏幕高度更高,因此我可能可以在ListView中添加一到两个项目,以占用提供的额外空间


在显示UI之前,如何测量启动时屏幕提供的可用高度?如果我看到高度可以容纳8个以上的项目,我想再添加一行或两行。

我同意上面的评论,但如果你真的想走这条路,请尝试以下方法:

Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
你可以从你的主要活动中,也就是从启动程序开始的活动中进行


但是,这并没有考虑通知栏或窗口装饰占用的空间,因此实际上,您的空间小于宽度乘以高度。

以下是我使用最多的代码:

public class MainActivity extends Activity {

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.????????);

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    Constants.SCREEN_HEIGHT = dm.heightPixels;
    Constants.SCREEN_WIDTH = dm.widthPixels;
  }
}

这听起来像是一条危险的道路,因为如果用户决定将G1转换为横向模式,该怎么办?如果屏幕尺寸比G1小,那么你当前的8个项目会太大吗?是的,非常好的一点-老实说,我对这样做很紧张,但我想调查一下。我认为这可能是一个合理的猜测:在应用程序启动时,在纵向模式下获取屏幕高度。用它作为我的标准来计算要显示多少项。我同意他们以横向模式启动应用程序,并拥有更多适合该方向的项目。理想情况下,我只希望有一个项目的#这样当他们在肖像模式下,所有的项目都适合而不需要任何滚动,这是某种动态增长的列表吗?你可以用锤子敲打问题,一开始就装上16件物品。除非你正在做一些疯狂的事情来填充每一行,否则我不认为这在速度上会有明显的差异,这样列表在更高的分辨率上仍然看起来“完整”,而不必担心Daniel提到的跳转。