У меня есть 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 из оригинального растрового изображения.
Что я пробовал:
1. Получение их из XML, вставка'dummy-drawable' внутри и замените его результатом, описанным выше.2. Создайте LayerDrawable внутри моей Программы, передавая все рисованные объекты внутри.Кажется, что setLayerInset не имеет никакого эффекта, или я вижу только Фон (который был Элементом 0 внутри моего Drawable Array)
3. Расширяя LayerDrawable и пытаюсь самостоятельно отслеживать что-либо без разумных результатов