Eclipse图形布局窗口度量返回NullPointerException



我有一个自定义视图,它需要屏幕分辨率来做一些计算。。。它需要缩放一些文本,使其始终适合视图中的某个空间。所以我需要知道视野的大小。

下面的代码在设备和模拟器上运行良好。但它在Eclipse图形布局预览中以一个NullPointerException爆炸。WindowManager似乎在Eclipse预览中不起作用。所以现在,我正在检查值,并在不合理的时候对其进行硬编码。。。但这也意味着我需要不断编辑数字来测试不同的屏幕大小。

一定有更好的办法。任何人

感谢

@Override
protected void onMeasure(int widthSpec, int heightSpec) {
    Context context=this.getContext().getApplicationContext();
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    wm.getDefaultDisplay().getMetrics(metrics);
    int displayWidth = metrics.widthPixels;
    int displayHeight = metrics.heightPixels;
    if (!(displayWidth > 0))
        displayWidth = 720;
    ...

我认为您应该使用getContext().getResources().get-DisplayMetrics()。从窗口管理器获取它可能有点太"低级",eclipse无法很好地处理它。

我还建议您使用度量规范而不是显示度量,除非您有权在视图/活动边界之外绘制,否则您试图容纳的实际空间总是传递到onMeasure WidthSpec/HeightSpec中。。

最新更新