Xamarin Android SetBackgroundDrawable veraltet, aber nicht SetBackground()
var textView = parentView.FindViewById<TextView>(Resource.Id.txt_chat_message);
GradientDrawable gd = new GradientDrawable();
gd.SetCornerRadius(10);
gd.SetColor(Color.Yellow);
textView.SetBackgroundDrawable(gd);
Wie im obigen Beispiel SetBackgroundDrawable
mir erlaubt, die Farbe und der radius programmiert werden. Ich habe mir bei SetBackgroundResouce
aber ich kann nicht finden, ein deutliches Beispiel, wie es scheint, nehmen Sie eine ID für eine Ressource, die ich nicht ändern konnte progamatically.
Könnte mir jemand helfen eine alternative, das gibt mir die Flexibilität, um genau die gleiche wie SetBackgroundDrawable
oben bitte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die Hintergrund Eigenschaft. In der Regel, wenn Android hat einen getX/setX-Methode ohne Argumente, Xamarin wandelt es in ein C# - Stil-Eigenschaft mit dem Namen X.
Background
allein (es sei denn, ich bin dumm, das ist durchaus möglich : )java.lang.NoSuchMethodError: no method with name='setBackground' signature='(Landroid/graphics/drawable/Drawable;)V' in class Landroid/view/View;
BuildVersionCodes sdk = Build.VERSION.SdkInt; if (sdk < BuildVersionCodes.JellyBean) { TextView.SetBackgroundDrawable(gd); } else { TextView.Background = gd; }
Bearbeiten
Basierend auf dem device scheint es
Background
Eigenschaft ist nicht vollständig implementiert sind im moment (11.11.2015). Meine trial-and-error-Ansatz weist darauf hin, dass die EinstellungBackground
durch die Eigenschaft wirft Ausnahme, dass es nichtsetBackground
- Methode mit den passenden Argumenten. Also das Problem ist nicht mit dem neuen Weg, den drawables aber wenn Sie versuchen, um Sie. Vielleicht bin ich den Missbrauch dieser, so bin ich offen für Korrekturen.Ursprüngliche Antwort
Können Sie die Background-Eigenschaft als @Jason schon Vorgeschlagen.
In der Reihenfolge zu verwenden, die Sie brauchen, um Drawable jetzt der lustige Teil:
GetDrawable
Methode ist veraltet (seit API-22 glaube ich), so dass Sie verwenden sollten :statt
Resources.GetDrawable(Resource.Drawable.your_drawable);
Diesen link gefunden, Referenz: Mehr Infos über die Anreise drawables in Android native
using Android.Support.V4.Content
), aber VS wird Sie wissen lassen 🙂Statt
SetBackgroundDrawable(back);
verwendenBackground = back;
Müssen Sie dies so tun: