Android widgetkleur wijzigen tijdens runtime BIJGEWERKT

Ik heb een widget met een framelayout.

Is er een manier om de kleur/vorm van mijn widgets in runtime te wijzigen?

Ik gebruik een vorm xml voor de achtergrond.

update:

ik probeerde: 1,

            Paint paint=new Paint(); 

            Bitmap bitmap=Bitmap.createBitmap(100, 100, Config.ARGB_8888);
            Canvas canvas=new Canvas(bitmap);
            paint.setColor(Color.RED);
            canvas.drawRoundRect(new RectF(1,1,111,111), 10, 10, paint);

            updateViews.setImageViewBitmap(R.id.FL, bitmap);

--> error loading widget

2,

updateViews.setImageViewResource(R.id.FL, R.drawable.blue);

--> error loading widget

2
Na welke gebeurtenissen wilt u de kleur/vorm wijzigen? Dingen zoals onFocus of onClick?
toegevoegd de auteur espinchi, de bron

3 antwoord

U kunt een tijdelijke oplossing proberen door een ImageView toe te voegen om de hele FrameLayout te vullen en vervolgens de RemoteViews.setImageViewResource (int viewId, int srcId) te gebruiken .

1
toegevoegd
ik heb het eerder geprobeerd, maar ik krijg hier een "error loading widget" :(
toegevoegd de auteur lacas, de bron
FL is een framelayout, het is geen werk? alleen imageview?
toegevoegd de auteur lacas, de bron
Dat is raar, weet u zeker dat RL een ImageView is? Ik heb setImageViewResource eerder gebruikt en het werkte.
toegevoegd de auteur Giohji, de bron
Ja, je zou setImageViewResource alleen op een imageView of een imageButton moeten gebruiken, vandaar de suggestie om het je hele RelativeLayout of FrameLayout te laten invullen.
toegevoegd de auteur Giohji, de bron

Voor kleur:

view.setBackgroundColor(Color.parseColor("#FFFFFF"));

Voor vorm of middelen:

view.setBackgroundResource(R.drawable.my_shape);
0
toegevoegd
dat werkt niet in widget-modus, alleen op activiteit, op widget kunnen we alleen updateViews gebruiken
toegevoegd de auteur lacas, de bron
mijn fout. Ik dacht dat je het widgetpakket android.widget bedoelde
toegevoegd de auteur fadisdh, de bron

Ik neem aan dat je widget een TextView is en je de kleur ervan wilt wijzigen in wit.

Eerst neem je er een verwijzing naar, door de ID te gebruiken die je hebt opgegeven in de XML-indeling:

TextView textView = (TextView) findViewById(R.id.textViewId);

Nu kunt u gewoon de kleur instellen:

textView.setBackgroundColorResource(R.color.white);
0
toegevoegd
dat werkt niet in widget-modus, alleen op activiteit, op widget kunnen we alleen updateViews gebruiken
toegevoegd de auteur lacas, de bron
Helaas, ik lees "widget" zoals in "GUI-component", niet zoals in "Android-widget, die in het startscherm".
toegevoegd de auteur espinchi, de bron