![](/img/trans.png)
[英]Android LayerDrawable: How to set layer coordinates programmatically?
[英]how to resize and position Drawables inside a LayerDrawable in Android
我有一个 LayerDrawable,它应该显示 5 个位图。 1 个背景和 4 个图标(每个 LayerDrawable 可能不同),如网格。 不幸的是,这些图标的宽度与高度不同。 我的问题是调整它们的大小,同时保持它们的比例并将它们放在 Position (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,传递里面的所有drawable。 似乎 setLayerInset 没有影响,或者我只看到背景(这是我的可绘制数组中的元素 0)
3. 扩展 LayerDrawable 并尝试在没有合理结果的情况下自己跟踪任何事情
BitmapDrawable
, dy 默认值,用给定的Bitmap
填充其边界。 如果您开始使用Gravity
,根据给定的Gravity
, Bitmap
将是 position 。 我想在你的情况下,最好的选择是创建你自己的Drawable
。
关于 getIntrinsic[Height|Width] 方法,它们返回底层Bitmap
的实际大小,如果系统在加载它时调整它的大小(例如在 mdpi 屏幕上加载的 hdpi 图像),它可能会有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.