簡體   English   中英

如何在 Android 的 LayerDrawable 中調整大小和 position Drawables

[英]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 ,根據給定的GravityBitmap將是 position 。 我想在你的情況下,最好的選擇是創建你自己的Drawable

關於 getIntrinsic[Height|Width] 方法,它們返回底層Bitmap的實際大小,如果系統在加載它時調整它的大小(例如在 mdpi 屏幕上加載的 hdpi 圖像),它可能會有所不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM