I have a layout
where the Gallery
height
is WRAP_CONTENT (width is FILL_PARENT)
with bottom margin of 80dp
. This would leave 80dp
at bottom of screen for something else.
The problem is how can I find out exactly how many pixels do I have in the height
of this Gallery
?
bitmap
in Gallery's getView
(as I want each image to take up a full Gallery screen) Various devices should give me different height pixels...
Apparently when I query Gallery.getHeight
, it returns zero.
Also, if the image itself is smaller than the Gallery view port, I want to scale it up. However setScaleType(FIT_CENTER)
seems to only scale down (if image is larger than viewport) yet does not scale up? Am I missin开发者_高级运维g something?
Thanks in advance for your help.
Gallery
is just another View
, so any method defined for View
will work. Use myGalery.getHeight();
From the View
API reference page: http://developer.android.com/reference/android/view/View.html
Size, padding and margins
The size of a view is expressed with a width and a height. A view actually possess two pairs of width and height values.
The first pair is known as measured width and measured height. These dimensions define how big a view wants to be within its parent (see Layout for more details.) The measured dimensions can be obtained by calling getMeasuredWidth() and getMeasuredHeight().
The second pair is simply known as width and height, or sometimes drawing width and drawing height. These dimensions define the actual size of the view on screen, at drawing time and after layout. These values may, but do not have to, be different from the measured width and height. The width and height can be obtained by calling getWidth() and getHeight().
To measure its dimensions, a view takes into account its padding. The padding is expressed in pixels for the left, top, right and bottom parts of the view. Padding can be used to offset the content of the view by a specific amount of pixels. For instance, a left padding of 2 will push the view's content by 2 pixels to the right of the left edge. Padding can be set using the setPadding(int, int, int, int) method and queried by calling getPaddingLeft(), getPaddingTop(), getPaddingRight() and getPaddingBottom().
Update
Be careful when are you measuring it. If you use it on the constructor, the it will return zero since it was not drawn yet. Unless you are absolutely sure that the GridView
will be visible by the time you measure it, you can measure by adding an View.OnLayoutChangeListener
and implementing
public abstract void onLayoutChange (View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom)
http://developer.android.com/reference/android/view/View.OnLayoutChangeListener.html
or overriding protected void onSizeChanged (int w, int h, int oldw, int oldh)
u can get the total height & delete 80px from it ie(your Gallery height) get total height by this code
Display display;
display = activity.getWindowManager().getDefaultDisplay();
display.getHeight()
精彩评论