Изменить фон RemoteView ImageView

У меня есть remoteView с ImageViews, и мне нужно программно изменить «android: background».

Я знаю, как изменить «android: src» с помощью:

remoteView.setImageViewResource(int viewId, int srcId);

И он отлично работает, но как мне изменить «android: background»?

Спасибо


person BrainCrash    schedule 13.06.2011    source источник


Ответы (3)


Вы можете использовать метод public void setInt (int viewId, String methodName, int value).

remoteView.setInt(R.id.viewid, "setBackgroundResource", R.color.your_color)
person jamapag    schedule 16.06.2011
comment
Это работает с версией Android SDK › 7 в SDK 7 без аннотации @RemotableViewMethod источник здесь, а в SDK 8 добавлен источник здесь и эта аннотация является лишь причиной того, что метод setBackgroundResource() не работает. - person Nikolay Nikiforchuk; 16.01.2013
comment
В виджете (на домашней странице), который использует ListView, этот метод setInt() работал для внутренних макетов элемента, но не для самого внешнего представления элемента; Я предполагаю, что система сбрасывает bg самого внешнего вида на свой собственный селектор. - person larham1; 02.12.2013

Используйте setBackgroundResource(int).

Кроме того, вот что вы можете принять к сведению. При просмотре документации Android, если есть xml для представления, которое вы можете изменить, он обычно указывает на метод внесения изменений во время выполнения.

person nicholas.hauschild    schedule 13.06.2011
comment
Я знаю использование setBackgroundResource(int), но, к сожалению, его нельзя использовать на remoteViews. - person BrainCrash; 13.06.2011
comment
В вопросе не упоминается, что вы используете объект RemoveViews. Пожалуйста, будьте более конкретными. - person nicholas.hauschild; 13.06.2011
comment
В заголовке и описании присутствует слово widget, также пример начинается с remoteView. Я все равно отредактирую, чтобы было понятнее. - person BrainCrash; 16.06.2011
comment
developer.android.com/reference/android/widget/ По сути, каждое представление находится в пакете виджетов. Виджеты главного экрана — это виджеты. Но виджеты не являются виджетами домашнего экрана. Кроме того, ваша схема именования переменных не должна быть единственной документацией или описанием. - person Falmarri; 07.07.2011
comment
Честно говоря, путаница между виджетом и виджетом приложения / виджетом домашнего экрана происходит из официальной документации. - person Jose_GD; 26.03.2014

Путь джерри-рига

Я думаю, вы могли бы сделать это, используя способ jerry-rig, создав второй макет с новым фоном, затем вы создаете свой remoteView, используя этот новый макет, например:

  • RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget1);
  • RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget2);

в конце концов, макет не так уж и дорог.

person Charleston    schedule 24.02.2015