【问题标题】:how to resize and position Drawables inside a LayerDrawable in Android如何在 Android 中的 LayerDrawable 中调整 Drawable 的大小和位置
【发布时间】:2011-10-08 11:16:38
【问题描述】:

我有一个 LayerDrawable,它应该显示 5 个位图。 1 个背景和 4 个图标(每个 LayerDrawable 可能不同),如网格。不幸的是,这些图标的宽度与高度不同。我的问题是调整它们的大小,同时保持它们的比例并将它们放在它们的位置内(1-4 个图标,5 个背景):

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

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

【问题讨论】:

    标签: java android bitmap drawable layer


    【解决方案1】:

    BitmapDrawable,dy 默认值,用给定的Bitmap 填充其边界。如果您开始使用GravityBitmap 将根据给定的Gravity 定位。我想在你的情况下,最好的选择是创建你自己的Drawable

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

    【讨论】:

      猜你喜欢
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 2013-07-04
      • 2011-06-17
      • 1970-01-01
      • 2017-12-20
      • 2011-08-25
      相关资源
      最近更新 更多