У меня есть виджет с одной кнопкой, который я хочу отображать зеленым, янтарным или красным цветом - мне нужно иметь возможность программно переключаться с одного на другой после загрузки виджета. Я испробовал огромное количество разных подходов к этому, но все, что мне когда-либо удавалось, это изменение цвета фона. Подход, который я использую, заключается в том, чтобы иметь кнопку на виджете в трех версиях, но сделать только ту, которую я хочу, видимой. Из-за большого количества беспорядка по этому поводу я создал очень маленькое приложение для проверки только этого, оставив основное приложение в покое, пока у меня не будет ответа.
Код ниже реагирует на нажатие кнопки MainActivity :
public void green (View view){
Context context = this;
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisWidget = new ComponentName(context, ExampleAppWidgetProvider.class);
RemoteViews views =new RemoteViews(context.getPackageName(), R.layout.example_widget);
views.setInt(R.id.button1, "setVisiblity", VISIBLE);
views.setInt(R.id.button2, "setVisiblity", GONE);
views.setInt(R.id.button3, "setVisiblity", GONE);
views.setInt(R.id.example_widget_button, "setBackgroundColor",android.graphics.Color.RED);
appWidgetManager.updateAppWidget(thisWidget, views);
}
Я знаю, что нажатие кнопки работает, потому что, если я закомментирую строки видимости, кнопка примера переключится на красный фон, поэтому виджет обновляется, но если я включу строки видимости, я get 'Ошибка загрузки виджета'.
Попытка удаленного изменения цвета этой кнопки стала чем-то вроде саги - я пытался изменить оттенки фона и фоновые изображения, но только кажется, что можно изменить фон цвет, который производит довольно уродливый блок на домашнем экране. У меня грустный: O (