我有一个LayerDrawable,它应该显示5个位图。 1个背景和4个图标(对于每个LayerDrawable可以是不同的),如Grid。不幸的是,这些图标的宽度与高度不同。我的问题是调整它们的大小,同时保持它们的比例并将它们置于其位置(1-4个图标,5个背景):
==================
| | | |
| 1 | | 2 |
|------.5 .------|
|------. .------|
| 3 | | 4 |
| | | |
==================
如果我调整这些位图的大小,给它们Gravity.CENTER
它们将不再适合背景矩形的边界。如果我离开Gravity.CENTER
,我们会在致电layerDrawable.setLayerInset(numlayer, left, top, right, bottom)
后立即重新调整。
做正确的方法是什么?如何在正确放置时保持比例?
到目前为止我还无法理解的是为什么来自BitmapDrawable的getIntrinsicWidth / Height返回的东西(小于)来自原始Bitmap的getWidth / Height。
我尝试了什么:
1.从XML中获取它们,在内部放置一个'dummy-drawable'并用上面描述的结果替换它。
2.在我的程序中创建LayerDrawable,传递所有drawables。似乎setLayerInset没有影响,或者我只看到背景(我的可绘制数组中的元素0)
3.扩展LayerDrawable并尝试在没有合理结果的情况下跟踪任何事情
答案 0 :(得分:1)
BitmapDrawable
,dy默认值,使用给定的Bitmap
填充其边界。如果您开始使用Gravity
,则Bitmap
将根据给定的Gravity
进行排名。我想在您的情况下,最好的选择是创建自己的Drawable
。
关于getIntrinsic [Height | Width]方法,它们返回底层Bitmap
的实际大小,如果系统在加载它时将其调整大小(例如,在mdpi屏幕上加载hdpi图像)可能会有所不同)。