Ich möchte den Hintergrund einer Ansicht zeichnen lassen. Dafür gibt es zwei Methoden (soweit ich sehe): setBackground
und setBackgroundDrawable
.
Wenn ich es verwende setBackground
, heißt es, dass es in API-Level 16 hinzugefügt wurde, aber die minimale SDK-Version meines Projekts ist 7. Ich gehe davon aus, dass es bei nichts unter 16 funktionieren wird, habe ich Recht? Aber wenn ich setBackgroundDrawable verwende, heißt es, dass es veraltet ist.
Was soll ich verwenden?
android
view
background
drawable
Pijusn
quelle
quelle
Antworten:
Es ist veraltet, aber es funktioniert immer noch, so dass Sie es einfach verwenden können. Aber wenn Sie völlig korrekt sein wollen, nur der Vollständigkeit halber ... Sie würden so etwas wie das Folgende tun:
Damit dies funktioniert, müssen Sie buildTarget api 16 und min build auf 7 oder ähnliches setzen.
quelle
android:minSdkVersion="7" android:targetSdkVersion="17"
jedoch setBackground () als Fehler: Aufruf erfordert API Level 16 (aktuelle min ist 7)@TargetApi(Build.VERSION_CODES.JELLY_BEAN) @SuppressWarnings("deprecation") private static void setBg(RelativeLayout layout, BitmapDrawable TileMe) { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) { layout.setBackgroundDrawable(TileMe); } else { layout.setBackground(TileMe); } }
Sie können
setBackgroundResource()
stattdessen die API-Ebene 1 verwenden.quelle
setBackgroundResource(int)
Akzeptiert die Ressourcen-ID, daher muss die Ansicht jedes Mal aufgeblasen werden, um den Hintergrund festzulegen. Ich möchte ein solches Verhalten nicht, vorausgesetzt, ich habe Drawable bereits aufgeblasen. Vermisse ich etwasAnscheinend gibt es derzeit keinen Unterschied zwischen den beiden Funktionen, wie im Quellcode angegeben (Gutschrift für diesen Beitrag ):
Es handelt sich also nur um eine Namensentscheidung, ähnlich der mit Fill-Parent gegen Match-Parent.
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich habe eine ähnliche Situation, und meine Lösung war
und dann können Sie mit dem "Drawable" spielen, Farbfilter anwenden usw.
quelle
Verwenden
ViewCompat.setBackground(view, background);
quelle
Sie könnten
setBackgroundResource()
stattdessen verwenden, dhrelativeLayout.setBackgroundResource(R.drawable.back);
das funktioniert bei mir.
quelle
Jetzt können Sie eine dieser Optionen verwenden. Und es wird auf jeden Fall funktionieren. Ihre Farbe kann ein HEX-Code sein , wie folgt:
Eine Farbressource wie diese:
Oder eine benutzerdefinierte XML-Ressource wie folgt:
Ich hoffe es hilft!
quelle
Mit Android Studio 1.5.1 habe ich folgende Warnungen erhalten:
und die Beschwerden über die Abschreibung
Mit diesem Format habe ich beide losgeworden:
quelle
Das funktioniert bei mir: Ansicht Ansicht ist Ihr editText, Spinner ... etc. Und int drawable ist Ihr Beispiel für eine zeichnbare Route (R.drawable.yourDrawable).
quelle
Verwenden Sie setBackgroundResource (R.drawable.xml / png)
quelle
Ich hatte auch dieses Problem, aber ich habe eine Problemumgehung mit einer ImageView durchgeführt .
Versuchen Sie es mit einem RelativeLayout und fügen Sie eine ImageView hinzu (Breite und Höhe: fill_parent, scaleType: center).
Stellen Sie außerdem sicher, dass die Bildansicht das erste Element im RelativeLayout ist, damit sie als Hintergrund fungiert.
quelle
if
Klausel sein. Siehe die richtige Antwort.Sie können dies auch tun:
BEARBEITEN: Wie von @BlazejCzapp hervorgehoben , ist es vorzuziehen, die Verwendung von Reflexion zu vermeiden, wenn Sie das Problem ohne sie lösen können. Ich hatte einen Anwendungsfall, in dem ich nicht ohne Reflexion lösen konnte, aber das ist oben nicht der Fall. Weitere Informationen finden Sie unter http://docs.oracle.com/javase/tutorial/reflect/index.html
quelle