Я хочу изменить цвет фона кнопки в моем виджете приложения.
Поскольку я хочу сохранить форму обычной кнопки Android, я подумал о backgroundTint. Я должен установить цвет программно в методе onUpdate моего класса виджетов.
Я пытался:
views.setInt(buttonId, "setBackgroundColor", Color.parseColor("#ffffff"));
-> также изменяет форму кнопки
views.setInt(buttonId, "setBackgroundTint", Color.parseColor("#ffffff"));
views.setInt(buttonId, "setTint", Color.parseColor("#ffffff"));
views.setInt(buttonId, "setColorFilter", Color.parseColor("#ffffff"));
-> виджет не может быть отображен (без кода ошибки в logcat)
views.setInt(buttonId, "setBackgroundTintList", colorStateList );
-> ожидает, что ColorStateList не int ...
Знаете ли вы решение или простую альтернативу?
Edit:
Еще немного кода:
AppWidget.java:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int appWidgetId : appWidgetIds) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.app_widget);
views.setCharSequence(buttonId, "setText", "TEXT");
//views.setInt(buttonId, "setColorFilter", Color.parseColor("#ffffff"));
}
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
app_widget.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llWidget"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false">
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight=".25"
android:backgroundTint="@color/Color"
android:text="string" />
</LinearLayout>