У меня была такая же потребность с моим виджетом.Именно эти две ссылки, которые вы опубликовали, помогли мне найти решение, которое, наконец, потребовало немного больше исследований.
Чтобы получить второй размер для вашего виджета:
Определите другого получателя в вашем манифесте с другим именем.Это важно: если вы не используете другое имя, только одно будет отображаться в списке доступных виджетов.Например: android:name=".MyWidget_Small"
и android:name=".MyWidget_Medium"
.Также измените метки соответственно
Дополнительному получателю нужен новый поставщик appwidget в res / xml.В android: ресурс метаданных тега введите имя другого XML-файла.Тогда у вас будет android:resource="@xml/MyWidgetProvider_Small"
и android:resource="@xml/MyWidgetProvider_Medium"
Каждый XML-файл в res / xml должен указывать на отдельный макет.У вас будет android:initialLayout="@layout/MyWidget_Small"
и android:initialLayout="@layout/MyWidget_Medium"
Теперь часть Java.Каждому провайдеру appwidget необходим соответствующий класс Java, который расширяет AppWidgetProvider, поэтому вам понадобятся два дополнительных класса.Если ваш первоначальный класс был MyWidget.java, вы добавите MyWidgetSmall.java и MyWidgetMedium.java.Вы, вероятно, в конечном итоге создадите подклассы своего исходного Java-класса и, возможно, измените каждый новый класс, если виджет будет иметь различное поведение в каждом размере.Не забудьте назвать два класса, как вы делали в шаге 1 на андроиде получателя: name
Ваша служба не нуждается в дублировании.Однако вы должны изучить свой исходный код, чтобы найти вхождения явных ссылок на MyWidget.class.Если вы сделали это, вы должны ссылаться на фактический подкласс
Надеюсь, это поможет