У меня есть ImageView
, который отображает png с большим соотношением сторон, чем у устройства (вертикально говоря, то есть длиннее) . Я хочу отображать это, сохраняя соотношение сторон, соответствие ширине родительского элемента и закрепление изображения в верхней части экрана.
Проблема, с которой я столкнулся с использованием CENTER_CROP
в качестве типа масштаба, заключается в том, что он (понятно) центрирует масштабированное изображение вместо выравнивания верхнего края по верхнему краю для просмотра изображения.
Проблема с FIT_START
заключается в том, что изображение соответствует высоте экрана, но не заполняет ширину.
Я решил эту проблему, используя пользовательский ImageView и переопределив onDraw (Canvas)
и обрабатывать это вручную с помощью холста; проблема с этим подходом заключается в том, что 1) я беспокоюсь, что может быть более простое решение, 2) я получаю исключение памяти виртуальной машины при вызове super (AttributeSet)
в конструкторе при попытке установить src img размером 330 КБ, когда в куче 3 МБ свободно (при размере кучи 6 МБ) и не могу понять, почему.
Любые идеи / предложения / решения приветствуются :)
Спасибо
ps Я подумал, что решением может быть использование типа матричной шкалы и сделать это самому, но это похоже на то же или больше работы, чем мое текущее решение!