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

Har*_*tin 14 android android-layout

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

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
width1 = metrics.widthPixels; 
height1 = metrics.heightPixels;
Run Code Online (Sandbox Code Playgroud)

但我有一个错误:

getWindowManager方法未定义

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

import android.view.Display;
import android.view.Window;
import android.view.WindowManager;
import android.content.Context;
import android.util.DisplayMetrics;
Run Code Online (Sandbox Code Playgroud)

小智 46

你在哪里使用这段代码?

getWindowManager由于你的类的根没有它,所以无法找到方法的错误.

试试这个:

((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);
Run Code Online (Sandbox Code Playgroud)

要么

((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE))
  .getDefaultDisplay().getMetrics(metrics);
Run Code Online (Sandbox Code Playgroud)

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


Shr*_*jan 5

用这个:

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

更新

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

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

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Run Code Online (Sandbox Code Playgroud)

  • getHeight()现在已弃用 (5认同)

jee*_*eet 0

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

对于Wallpaper,此方法无法获取窗口的高度或宽度,您需要使用surface 获取可用窗口的宽度和高度。