2011-07-19 45 views
5

我有一个LayerDrawable,它应该显示5位图。 1个背景和4个图标(对于每个LayerDrawable可以不同),就像Grid一样。不幸的是,这些图标的高度不一样。我的问题是调整它们的大小,同时保持它们的比例,并把他们自己的位置内(1-4图标,5背景):如何在Android中的LayerDrawable中调整大小和位置Drawables

================== 
|  | |  | 
| 1 | | 2 | 
|------.5 .------| 
|------. .------| 
| 3 | | 4 | 
|  | |  | 
================== 

如果我调整这些位图,给他们Gravity.CENTER,他们将再也装不下内背景矩形的界限。如果我离开Gravity.CENTER,他们似乎会在我拨打layerDrawable.setLayerInset(numlayer, left, top, right, bottom)后重新调整比例。 什么是正确的做法?我如何在正确放置它们的同时保持它们的比例? 到目前为止,我还无法理解的是,为什么来自BitmapDrawable的getIntrinsicWidth/Height从原始位图返回比getWidth/Height更小的东西。
我试过的:
1.从XML中获取它们,在里面放置一个“虚拟绘制”并用上述结果替换它。 2.在我的程序里面创建LayerDrawable,在里面传递所有的drawable。似乎setLayerInset没有影响,或者我只看到背景(这是元素0我绘制对象数组内)
3.扩展LayerDrawable并试图跟踪任何东西自己没有合理的结果

回答

1

BitmapDrawable,DY默认,填写给定的Bitmap。如果您开始使用Gravity,则Bitmap将根据给定的Gravity定位。我想在你的情况下,最好的选择是创建你自己的Drawable

关于getIntrinsic [Height | Width]方法,它们会返回底层Bitmap的实际大小,如果系统在加载它时调整大小(例如加载到mdpi屏幕上的hdpi图像),则实际大小可能不同。

相关问题