在android上获取窗口大小时出错:“方法getWindowManager未定义”

时间:2012-01-12 10:50:39

标签: android android-layout

我需要获得窗户高度和重量 我的代码中有这个:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
width1 = metrics.widthPixels; 
height1 = metrics.heightPixels;

但我有一个错误:

  

方法getWindowManager未定义

我应该为此导入什么? 或者我可以用不同的方式获得熨平板的尺寸? 我已导入

import android.view.Display;
import android.view.Window;
import android.view.WindowManager;
import android.content.Context;
import android.util.DisplayMetrics;

6 个答案:

答案 0 :(得分:45)

您在哪里使用此代码?

getWindowManager的错误表示无法找到该方法,因为您的类的根没有它。

试试这个:

((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);

((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE))
  .getDefaultDisplay().getMetrics(metrics);

如果这不起作用,请粘贴您的活动

答案 1 :(得分:4)

使用此:

 display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
 display.getWidth(); // to get width of the screen
 display.getHeight(); // to get height of the Screen

<强>更新

请查看Android-Developer网站。有关更多参考。

您可以使用以下代码段来获取设备的高度宽度。

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

感谢@halfer建议更新此内容。

答案 2 :(得分:2)

将活动的ContextgetActivityContext()

一起使用
DisplayMetrics metrics = new DisplayMetrics();
getActivityContext().getWindowManager().getDefaultDisplay().getMetrics(metrics);
width1 = metrics.widthPixels; 
height1 = metrics.heightPixels;

答案 3 :(得分:1)

如果您在片段中使用它,可以使用它:

getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);

答案 4 :(得分:0)

请检查您是否在活动类或外部活动中调用上述方法。

对于壁纸,此方法无法获得窗口的高度或宽度,您需要通过使用曲面获得可用窗口的宽度和高度。

答案 5 :(得分:0)

对我有用

import android.app.Activity;

((Activity)getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);

mediaProjectionManager = (MediaProjectionManager)((Activity) getContext()).getSystemService(Context.MEDIA_PROJECTION_SERVICE);