Je veux définir l'arrière-plan dessinable d'une vue. Il existe deux méthodes pour cela (pour autant que je vois): setBackground
et setBackgroundDrawable
.
Lorsque j'utilise setBackground
, il dit qu'il a été ajouté au niveau API 16 mais la version minimale du SDK de mon projet est 7. Je suppose que cela ne fonctionnera pas en dessous de 16, ai-je raison? Mais quand j'utilise setBackgroundDrawable, il dit que c'est obsolète.
Que dois-je utiliser?
android
view
background
drawable
Pijusn
la source
la source
Réponses:
Il est obsolète, mais il fonctionne toujours, vous pouvez donc simplement l'utiliser. Mais si vous voulez être complètement correct, juste pour l'exhaustivité ... Vous feriez quelque chose comme ceci:
Pour que cela fonctionne, vous devez définir buildTarget api 16 et min build à 7 ou quelque chose de similaire.
la source
android:minSdkVersion="7" android:targetSdkVersion="17"
, mais setBackground () apparaît comme une erreur: l' appel nécessite le niveau 16 de l'API@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); } }
Vous pouvez utiliser à la
setBackgroundResource()
place ce qui est au niveau 1 de l'API.la source
setBackgroundResource(int)
accepte l'ID de ressource, il doit donc gonfler la vue à chaque fois pour définir l'arrière-plan. Je ne veux pas un tel comportement, en supposant que j'ai déjà gonflé Drawable. Suis-je en train de manquer quelque chose?semble qu'il n'y ait actuellement aucune différence entre les 2 fonctions, comme le montre le code source (crédit à ce post ):
il s'agit donc simplement d'une décision de dénomination, similaire à celle avec fill-parent vs match-parent.
la source
je sais que c'est une vieille question mais j'ai une situation similaire, et ma solution était
et puis vous pouvez jouer avec le "Drawable", appliquer des filtres de couleur, etc.
la source
Utilisation
ViewCompat.setBackground(view, background);
la source
vous pouvez utiliser à la
setBackgroundResource()
place, c.-à-d.relativeLayout.setBackgroundResource(R.drawable.back);
cela fonctionne pour moi.
la source
Vous pouvez maintenant utiliser l'une de ces options. Et ça va marcher dans tous les cas. Votre couleur peut être un code HEX , comme ceci:
Une ressource couleur , comme celle-ci:
Ou une ressource xml personnalisée , comme ceci:
J'espère que ça aide!
la source
En utilisant Android studio 1.5.1, j'ai reçu les avertissements suivants:
et les plaintes de dépréciation
En utilisant ce format, je me suis débarrassé des deux:
la source
Cela fonctionne pour moi: la vue Vue est votre editText, spinner ... etc. Et int drawable est votre exemple d'itinéraire dessinable (R.drawable.yourDrawable)
la source
Utilisez setBackgroundResource (R.drawable.xml / png)
la source
J'ai également eu ce problème, mais j'ai fait une solution de contournement en utilisant une ImageView .
Essayez d'utiliser un RelativeLayout et ajoutez une ImageView à l'intérieur (largeur et hauteur: fill_parent, scaleType: center).
Assurez-vous également que l'imageview est le premier élément à l'intérieur de RelativeLayout, afin qu'il agisse comme arrière-plan.
la source
if
clause. Voir la bonne réponse.Vous pouvez également le faire:
EDIT: Comme l'a souligné @BlazejCzapp, il est préférable d'éviter d'utiliser la réflexion si vous parvenez à résoudre le problème sans elle. J'ai eu un cas d'utilisation où je n'ai pas pu résoudre sans réflexion mais ce n'est pas le cas ci-dessus. Pour plus d'informations, veuillez consulter http://docs.oracle.com/javase/tutorial/reflect/index.html
la source