Reputation: 143
I call getHeight and getWidth in a custom view in the onDraw()
method. getHeight()
returns 1,073,742,549
and getWidth()
returns 1,073,742,304
. However, when I look at the display metrics for the screen's height and width, I get 800 and 480 respectively. What is getHeight and getWidth returning?
I'm getting the dimensions of my view so I can choose the dimensions of a bitmap that'll go in the view.
Thanks.
Upvotes: 9
Views: 3600
Reputation: 101
I also had this problem. The way I solved it was overriding the onMeasure method. This way the view always has the same size. For example, If you want the view to have the size and width of the screen you should do something like this:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
WindowManager wm = (WindowManager)this.getContext().getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
//display.getWidth() and display.getHeight() return the screen dimensions
this.setMeasuredDimension(display.getWidth(), display.getHeight());
}
Upvotes: 0
Reputation: 108
Maybe, you did something like this in your custom view.
final int desiredHSpec = MeasureSpec.makeMeasureSpec(pixelHeight, MeasureSpec.MODE_CONSTANT);
final int desiredWSpec = MeasureSpec.makeMeasureSpec(pixelWidth, MeasureSpec.MODE_CONSTANT);
setMeasuredDimension(desiredWSpec, desiredHSpec);
If you change it into
setMeasuredDimension(width, height);
, you will get simple small width, height on your onSizeChanged() and onLayout().
Upvotes: 3
Reputation: 393963
getHeight()
and getWidth()
return the size in pixels see http://developer.android.com/reference/android/view/View.html#getHeight%28%29
The extra size is likely to be coming from the View.MeasureSpec
constant EXACTLY
see http://developer.android.com/reference/android/view/View.MeasureSpec.html#getSize%28int%29
Upvotes: 5
Reputation: 35923
Doesn't explicitly solve you're problem, but curiously:
Width:
1,073,742,304 == 0x400001E0
480 == 0x000001E0
Height:
1,073,742,549 == 0x400002D5
725 == 0x000002D5
Any chance this custom view is roughly 725 x 480? I have no idea where that extra 0x40000000 came from, but it looks like it could be almost right except for 1 bit :)
Upvotes: 11