Comment choisir la couleur de fond dessiné par programmation sous Android
Pour définir l'arrière-plan:
RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
Est la meilleure façon de le faire?
- Merci!!!! votre question et toutes les réponses utiles, m'a aidé à définir l'arrière-plan de ressources d'un bouton image à l'intérieur d'un widget. voici un exemple de code dans le cas où quelqu'un est intéressé:
remoteViews.setInt(R.id.btn_start,"setBackgroundResource", R.drawable.ic_button_start);
- Kotlin Solution pour qui peut avoir besoin : stackoverflow.com/a/54495750/6247186
Vous devez vous connecter pour publier un commentaire.
layout.setBackgroundResource(R.drawable.ready);
est correct.Une autre façon d'y parvenir est d'utiliser les éléments suivants:
Mais je pense que le problème se produit parce que vous tentez de charger de grosses images.
Ici est un bon tutoriel comment charger les grandes images bitmap.
Mise à JOUR:
getDrawable(int ) obsolète de l'API de niveau 22
getDrawable(int )
est maintenant obsolète de l'API de niveau 22.Vous devez utiliser le code suivant à partir de la bibliothèque de prise en charge à la place:
Si vous consultez le code source de ContextCompat.getDrawable, il vous donne quelque chose comme ceci:
Plus de détails sur ContextCompat
Comme de l'API 22, vous devez utiliser le
getDrawable(int, Theme)
méthode au lieu de getDrawable(int).Mise à JOUR:
Si vous utilisez le support v4 bibliothèque, la suite sera assez pour toutes les versions.
Vous devrez ajouter la ligne suivante dans votre app construire.gradle
Ou à l'aide de ResourceCompat, dans une API comme ci-dessous:
if(buttonBackground.equals(R.drawable.myDrawable))
oùDrawable buttonBackground = myButton.getBackground();
, j'obtiens cette erreur: snag.gy/weYgA.jpgmyActivity.getTheme()
pour la dernière version de la méthode, au lieu de null paramètre:myView.setBackground( getResources().getDrawable(R.drawable.my_background, activity.getTheme()));
Essayez ceci:
et pour API 16<:
getResources().getDrawable()
. Le code correct estlayout.setBackgroundResource(R.drawable.ready);
tout comme l'OP utilisé. Ici, le problème vient de la taille de l'image bitmap.maintenant, à l'intérieur de n'importe quelle fonction comme onCreate, onResume
Vous pouvez également définir l'arrière-plan de toute Image:
(.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
intérieure le codeSi votre arrière-plans sont dans le dossier drawable droit maintenant, essayez de déplacer les images à partir de drawable à drawable-nodpi dossier de votre projet. Cela a fonctionné pour moi, semble que d'autre les images sont redimensionnées par eux-même..
Je suis en utilisant un minSdkVersion 16 et targetSdkVersion 23.
Ce qui suit est de travailler pour moi, il utilise
Au lieu d'utiliser:
Plutôt utiliser:
getActivity()
est utilisé dans un fragment, si vous appelez à partir d'une activité utilisationthis
.Utilisation butterknife pour lier le drawable des ressources à une variable par l'ajout de ce à le haut de votre classe (avant toutes les méthodes).
puis à l'intérieur de l'une de vos méthodes d'ajouter
C'est tout ce que vous devez
Essayez ce code:
Donner un essai à
ViewCompat.setBackground(yourView , drawableBackground)
À l'intérieur de l'app/res/your_xml_layout_file.xml
de l'essayer.