Я создал виджет для Android, который показывает график. Виджет включает ImageView, который растягивается до полного размера виджета (match_parent для ширины и высоты). Я программно создаю растровое изображение и рисую на нем график, а затем устанавливаю растровое изображение ImageView на созданное растровое изображение.

Все работает нормально, за исключением того факта, что я не могу получить точные размеры доступного пространства виджета, поэтому график занимает только часть виджета (он не растягивается до доступной области виджета). Проблема заключается в том, что при создании растрового изображения я должен указать ему размер - я получаю размер виджета из параметров виджета OPTION_APPWIDGET_MAX_WIDTH и OPTION_APPWIDGET_MAX_HEIGHT.

На большинстве устройств виджет выглядит правильно, однако на некоторых других - нет (я заметил это на программах запуска, которые поддерживают 5 значков в строке - похоже, что значение OPTION_APPWIDGET_MAX_WIDTH предназначено для 4 значков / столбцов вместо 5).

Лучше всего было бы, если бы я мог получить размер растрового изображения из размера ImageView в виджете, однако это невозможно для RemoteView, насколько я знаю (и читал).

Я видел другой виджет, который, кажется, делает это правильно, поэтому, вероятно, есть лучший способ получить размер виджета во время выполнения.

Кто-нибудь знаком с этим? Могу ли я получить фактическую ширину и высоту виджета на главном экране во время выполнения? Обратите внимание, что я также пытался получить размер виджета из функции onAppWidgetOptionsChanged, но результат тот же.

Заранее спасибо

0
a.p. 12 Фев 2021 в 17:47

1 ответ

Лучший ответ

Неточный ответ, но я могу дать руководство:

Обратите внимание, что экран имеет размер пиксель , но ваш виджет основан на dp или sp .

Главное - рассмотреть все несколько типов, в которые они превращаются.

0
sina akbary 12 Фев 2021 в 18:57