1

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

下面的代码在设备和模拟器上运行良好。但它在 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;

    ...
4

1 回答 1

0

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

我还建议您使用度量规范而不是显示度量,除非您有权在视图/活动范围之外进行绘制,您尝试适应的实际空间始终传递给 onMeasure WidthSpec/HeightSpec..

于 2013-08-25T00:28:23.870 回答