Android,如何获取视窗组的宽度和高度?
在我的应用程序中,我需要知道活动主容器的大小。我编写了以下代码:Android,如何获取视窗组的宽度和高度?,android,height,width,viewgroup,Android,Height,Width,Viewgroup,在我的应用程序中,我需要知道活动主容器的大小。我编写了以下代码: Button btnActionMenu = (Button) findViewById(R.id.actionbar_menu); btnActionMenu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int w
Button btnActionMenu = (Button) findViewById(R.id.actionbar_menu);
btnActionMenu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int width = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics());
RelativeLayout rlContainer = (RelativeLayout) findViewById(R.id.inner_content);
Bitmap bitmap = Bitmap.createBitmap(rlContainer.getLayoutParams().width, rlContainer.getLayoutParams().height, Config.ARGB_8888);//
Canvas canvas = new Canvas(bitmap);
rlContainer.draw(canvas);
SlideoutHelper.setBitmap(bitmap, width);
startActivity(new Intent(Home.this, MenuActivity.class));
overridePendingTransition(0, 0);
}
});
rlContainer是活动的根容器。当我运行并单击按钮时,应用程序崩溃,Logcat显示应用程序空指针异常并指向行
Bitmap bitmap = Bitmap.createBitmap(rlContainer.getLayoutParams().width, rlContainer.getLayoutParams().height, Config.ARGB_8888);
如有任何建议,将不胜感激。谢谢试试这个:
v.measure(
MeasureSpec.makeMeasureSpec(v.getLayoutParams().width,MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(v.getLayoutParams().height, MeasureSpec.EXACTLY));
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight()
,Bitmap.Config.RGB_565);
您是否在rlContainer变量上尝试过getMeasuredHeight和getMeasuredWidth,或getHeight和getWidth 请注意,这仅在准备好视图后有效,而不在onCreate方法内有效。但是,它将在这种情况下工作,因为它位于与用户相关的操作中,该操作在视图显示给用户之后发生
顺便说一句,关于您的代码,rlContainer.getLayoutParams.width可能返回负值,以防它是包装内容或匹配父级 感谢亲爱的Imran,但结果与指向代码第二行的空指针消息相同。我不知道为什么会这样!!!谢谢你用的是RLV还是RLV?