Android:查找GalleryView的大小(分辨率)

Android:查找GalleryView的大小(分辨率),android,android-layout,height,gallery,Android,Android Layout,Height,Gallery,我有一个布局,其中画廊的高度是包裹,内容宽度是填充,底部边距为80dp。这将在屏幕底部留下80dp用于其他用途 问题是,我如何才能准确地知道我在这个画廊的高度有多少像素?我需要这个,以设置在画廊的getView位图的大小,因为我希望每个图像占据整个画廊屏幕不同的设备应该给我不同的高度像素 显然,当我查询Gallery.getHeight时,它返回零 另外,如果图像本身比Gallery view端口小,我希望将其放大。然而,setScaleTypeFIT_CENTER似乎只有在图像大于视口但未放大

我有一个布局,其中画廊的高度是包裹,内容宽度是填充,底部边距为80dp。这将在屏幕底部留下80dp用于其他用途

问题是,我如何才能准确地知道我在这个画廊的高度有多少像素?我需要这个,以设置在画廊的getView位图的大小,因为我希望每个图像占据整个画廊屏幕不同的设备应该给我不同的高度像素

显然,当我查询Gallery.getHeight时,它返回零

另外,如果图像本身比Gallery view端口小,我希望将其放大。然而,setScaleTypeFIT_CENTER似乎只有在图像大于视口但未放大时才缩小?我错过什么了吗


提前感谢您的帮助。

您可以获得总高度并从中删除80px作为您的画廊高度 通过此代码获取总高度

Display display;
display = activity.getWindowManager().getDefaultDisplay(); 
display.getHeight()
Gallery只是另一个视图,所以为视图定义的任何方法都可以工作。使用myGalery.getHeight

从查看API参考页面:

大小、填充和边距

视图的大小用宽度和高度表示。视图实际上具有两对宽度和高度值

第一对称为测量宽度和测量高度。这些尺寸定义了视图在其父视图中的大小。有关详细信息,请参见布局。通过调用getMeasuredWidth和getMeasuredHeight可以获得测量的尺寸

第二对简单地称为宽度和高度,有时称为绘图宽度和绘图高度。这些尺寸定义了绘制时和布局后屏幕上视图的实际大小。这些值可能(但不一定)不同于测量的宽度和高度。可以通过调用getWidth和getHeight来获取宽度和高度

要测量其尺寸,视图将考虑其填充。对于视图的左、上、右和下部分,填充以像素表示。填充可用于将视图内容偏移特定数量的像素。例如,左填充为2会将视图内容推到左边缘的右侧2个像素。可以使用setpaddingit、int、int、int方法设置填充,并通过调用getPaddingLeft、getPaddingTop、getPaddingRight和getPaddingBottom查询填充

使现代化 测量时要小心。如果在构造函数上使用它,它将返回零,因为它尚未绘制。除非您绝对确定GridView在测量时是可见的,否则您可以通过添加View.OnLayoutChangeListener并实现

public abstract void onLayoutChange (View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) 

或者在IZECHANGED int w,int h,int oldw,int oldh上覆盖受保护的void

是否有任何方法可以执行dp算法?对于分辨率较低的屏幕,80dp不等于80px。。。may dis将提供帮助或DisplayMetrics DisplayMetrics=新的DisplayMetrics;wn=WindowManager context.getSystemServiceContext.WINDOW\u服务;act.getWindowManager.getDefaultDisplay.getMetricsdisplaymetrics;可能是这样的,因为当我测量这些数字时,视图被夸大了,并且正确地返回了零。这是一个鸡和蛋的情况,因为我需要发送一个正确大小的像素数据。然而,我已经通过改变布局XML来解决了这个问题,在画廊的高度上使用FILL_PARENT。显然,它是在编译时计算出来的,现在我可以始终获得所需的605和正确的版本,所以其他小屏幕模拟器再次感谢您的帮助!