在一个Fragment中获取屏幕的宽度和高度

29

如果我在我的应用程序中扩展活动,我可以获取宽度和高度:

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;
或者
Display display = getWindowManager().getDefaultDisplay(); 
stageWidth = display.getWidth();
stageHeight = display.getHeigth();

但是现在我扩展了片段,就不能使用上述代码来获取宽度了。


你解决了你的问题吗? - rajpara
3个回答

74

尝试下面修改过的代码:

DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
或者
Display display = getActivity().getWindowManager().getDefaultDisplay(); 
int stageWidth = display.getWidth();
int stageHeight = display.getHeight();

基本上,您只需要在getWindowManager()函数之前放置getActivity()(以获取上下文)。


9
getWidth()getHeight() 已经过时。这是另一种方法:`Point size = new Point();getActivity().getWindowManager().getDefaultDisplay().getSize(size);` - bcorso

10

这将给您想要的结果,无需上下文或视图:

import android.content.res.Resources;

int width = Resources.getSystem().getDisplayMetrics().widthPixels;

int height = Resources.getSystem().getDisplayMetrics().heightPixels;

如果您不想支持多窗口,可以使用这个简单的方法。 当涉及到多窗口和您需要获取应用程序的屏幕宽度时,您需要通过上下文来获取。 - musooff

6

这段代码也适用于Fragment:

int width = getResources().getConfiguration().screenWidthDp;
int height = getResources().getConfiguration().screenHeightDp;

用于比较方向:

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){...}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接