У меня есть LayerDrawable, который должен отображать 5 растровых изображений. 1 фон и 4 значка (которые могут быть разными для каждого LayerDrawable), такие как сетка. К сожалению, ширина этих иконок отличается от высоты. Моя проблема состоит в том, чтобы изменить их размер, сохранив их соотношение и поместив их в свою позицию (1-4 значка, 5 фон):
==================
| | | |
| 1 | | 2 |
|------.5 .------|
|------. .------|
| 3 | | 4 |
| | | |
==================
Если я изменю размер этих растровых изображений, дам им Gravity.CENTER
, они больше не будут помещаться внутри границ фонового прямоугольника. Если я оставлю Gravity.CENTER
, они, кажется, будут перемасштабированы, как только я вызову layerDrawable.setLayerInset(numlayer, left, top, right, bottom)
. Как правильно это сделать? Как я могу сохранить их соотношение при правильном размещении? Чего я также не мог понять до сих пор, так это почему getIntrinsicWidth/Height из BitmapDrawable возвращает что-то другое (меньшее), чем getWidth/Height из исходного Bitmap.
Что я пробовал:
1. Получение их из XML, добавление 'dummy-drawable' внутри и замените его результатом, описанным выше. 2. Создайте LayerDrawable внутри моей программы, передав все чертежи внутри. Кажется, что setLayerInset не имеет никакого влияния, или я вижу только фон (который был элементом 0 внутри моего массива Drawable)
3. Расширение LayerDrawable и попытка отслеживать что-либо самостоятельно без разумных результатов.