J'essaie de définir la couleur d'arrière-plan d'une vue (dans ce cas, un bouton).
J'utilise ce code:
// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();
Cela fait disparaître le bouton de l'écran. Qu'est-ce que je fais mal et quelle est la bonne façon de changer la couleur d'arrière-plan sur n'importe quelle vue?
Merci.
Réponses:
Vous avez rendu votre bouton transparent. Le premier octet est l'alpha.
Essayer
v.setBackgroundColor(0xFF00FF00);
la source
0xff00ff00
, exactement la même chose que ce qui est suggéré dans la réponse, sauf qu'il a aussi l'avantage d'être lisible par l' homme . La plupart des développeurs préfèrent une solution lisible par l'homme.Lorsque vous appelez setBackgoundColor, il écrase / supprime toute ressource d'arrière-plan existante, y compris les bordures, les coins, le remplissage, etc. Ce que vous voulez faire est de changer la couleur de la ressource d'arrière-plan existante ...
View v; v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN);
Expérimentez avec PorterDuff.Mode. * Pour différents effets.
la source
Plusieurs choix pour ce faire ...
Définir l'arrière-plan sur vert:
v.setBackgroundColor(0x00FF00);
Définir l'arrière-plan en vert avec Alpha :
v.setBackgroundColor(0xFF00FF00);
Définissez l'arrière-plan sur vert avec la constante Color.GREEN:
v.setBackgroundColor(Color.GREEN);
Définir l'arrière-plan en vert définissant dans Colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="myGreen">#00FF00</color> <color name="myGreenWithAlpha">#FF00FF00</color> </resources>
et en utilisant:
v.setBackgroundResource(R.color.myGreen);
et:
v.setBackgroundResource(R.color.myGreenWithAlpha);
ou le plus long:
v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreen));
et:
v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreenWithAlpha));
la source
getResources().getColor(...)
est obsolète stackoverflow.com/questions/31842983/…v.setBackgroundResource(R.color.myGreen);
lors de l'utilisationcolors.xml
invalidate
appels, car vous pouvez voir que lessetBackground...
méthodes appellent déjà cela.v.setBackgroundColor(0x00FF00);
est juste leur code qui, selon eux, ne fonctionne pas. Je m'attendrais également à ce que ce soit transparent.Vous pouvez définir la couleur hexadécimale de n'importe quelle ressource avec:
View.setBackgroundColor(Color.parseColor("#e7eecc"));
la source
// set the background to green v.setBackgroundColor(0x0000FF00 ); v.invalidate();
Le code ne met pas le bouton au vert. Au lieu de cela, cela rend le bouton totalement invisible.
Explication: la valeur hexadécimale de la couleur est incorrecte. Avec une valeur Alpha de zéro, la couleur sera invisible.
La valeur hexadécimale correcte correspond
0xFF00FF00
au vert d'opacité totale. Toute valeur alpha comprise entre 00 et FF entraînerait de la transparence.la source
Sur tout
View
? Ce que vous avez est correct, mais vous devez abandonner l'invalidate()
appel.Cependant, certains
Views
ont déjà des antécédents. AButton
, par exemple, a déjà un arrière-plan: la face du bouton lui-même. Cet arrière-plan est unStateListDrawable
, que vous pouvez trouverandroid-2.1/data/res/drawable/btn_default.xml
dans votre installation du SDK Android. Cela, à son tour, fait référence à un groupe d'images bitmap à neuf patchs, disponibles en plusieurs densités. Vous auriez besoin de cloner et de modifier tout cela pour atteindre vos objectifs écologiques.En bref, vous serez mieux servi pour trouver un autre modèle d'interface utilisateur plutôt que d'essayer de changer l'arrière-plan d'un fichier
Button
.la source
Pour définir la première couleur à voir à l'écran, vous pouvez également le faire dans le layout.xml approprié (meilleur design) en ajoutant cette propriété à la vue appropriée:
android:background="#FF00FF00"
la source
essayez d'ajouter:
setBackgroundColor(Color.parseColor("#FF0000"));
la source
J'utilise à l'API min 16, cible 23
la source
mButton.setBackgroundColor(getResources().getColor(R.color.myColor));
la source
Vous pouvez utiliser simplement:
view.setBackgroundColor(Color.parseColor("#FFFFFF"));
la source
Cette question parle de changer la couleur d'arrière-plan d'une vue. Dans l'une des réponses, la personne explique comment changer la couleur d'arrière-plan pendant l'exécution. Évidemment, vous allez examiner comment modifier d'autres objets à l'écran, mais cela devrait vous donner un bon départ en vous permettant au moins de modifier la couleur d'arrière-plan de la vue en cliquant sur le bouton.
la source
Déclarer avec Android 6 utiliser ContextCompact
view.setBackgroundColor( ContextCompat.getColor(this, R.color.your_color));
la source
Vous pouvez utiliser simplement:
view.setBackgroundColor(Color.rgb(0, 198, 255));
la source
Dans kotlin, vous pouvez le faire comme ceci:
val backgroundColor = R.color.whatever_color_you_like view.setBackgroundColor(getColorCompat(backgroundColor))
Où
getColorCompat()
est une fonction d'extension:/** * Extension method to provide simpler access to {@link ContextCompat#getColor(int)}. */ fun Context.getColorCompat(color: Int) = ContextCompat.getColor(this, color)
la source
view.setBackgroundColor(R.color.primaryColor);
Ajoute de la couleur à la valeur de couleur précédente, donc j'ai une couleur différente.
Ce qui fonctionne pour moi, c'est:
view.setBackgroundResource(R.color.primaryColor);
la source
Supposons que nous avons une couleur primaire en
values=>colors.xml
tant que:<resources> <color name="primary">#FDD835</color> </resources>
donc si nous voulons utiliser notre couleur personnalisée,
setBackgroundColor(@ColorInt int Color)
nous avons juste besoin d'une annotation@SuppressLint("ResourceAsColor")
avec constructeur / méthode qui sera utilisée comme:@SuppressLint("ResourceAsColor") public _LinearLayout(Context context) { super(context); // Formatting our layout : ) super.setBackgroundColor(R.color.primary); .... }
la source
Vous devez passer un
int
dans l'argument.Premier exemple:
view.setBackgroundColor(-500136)
Deuxième exemple:
int colorId = R.color.green; view.setBackgroundResource(colorId);
la source
Cela devrait fonctionner correctement:
v.setBackgroundColor(0xFF00FF00);
la source
J'ai essayé toutes les méthodes ci-dessus. Mais je n'ai pas atteint ce dont j'ai besoin. Voici mon essai. Si vous utilisez un code hexadécimal pour la couleur et que vous souhaitez définir la couleur comme arrière-plan de l'image, il s'agit du code kotlin.
val bitmap = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888) val canvas = Canvas(bitmap) val colorCode = "#ffffff" canvas.drawColor(Color.parseColor(colorCode)) mImageViewLogo.setImageBitmap(bitmap)
la source