Question

J'utilise une barre de progression horizontale dans mon application Android, et je veux changer sa couleur de progression (qui est jaune par défaut). Comment puis-je le faire en utilisant code (non XML)?

Était-ce utile?

La solution

Je suis désolé que ce n'est pas la réponse, mais ce qui motive la mise en condition de ce code? Et .setProgressDrawable devrait fonctionner si elle est correctement défini

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="5dip" />
        <gradient
                android:startColor="#ff9d9e9d"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:angle="270"
        />
    </shape>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <gradient
                    android:startColor="#80ffd300"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:angle="270"
            />
        </shape>
    </clip>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners
                android:radius="5dip" />
            <gradient
                android:startColor="@color/progress_start"
                android:endColor="@color/progress_end"
                android:angle="270" 
            />
        </shape>
    </clip>
</item>

</layer-list>

Autres conseils

Pour une ProgressBar horizontale, vous pouvez utiliser un ColorFilter aussi, comme ceci:

progressBar.getProgressDrawable().setColorFilter(
    Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);

 Red ProgressBar à l'aide filtre de couleur

Remarque: Cela modifie l'apparence de tous les barres de progression dans votre application. Pour modifier une seule barre de progression spécifique, procédez comme suit:

Drawable progressDrawable = progressBar.getProgressDrawable().mutate();
progressDrawable.setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);
progressBar.setProgressDrawable(progressDrawable);

Si progressBar est indéterminée puis utilisez getIndeterminateDrawable() au lieu de getProgressDrawable().

Depuis Lollipop (API 21) vous pouvez définir une teinte de progression:

progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));

 Red ProgressBar à l'aide teinte de progression

Ce n'est pas, mais je pense que programme pourrait aider beaucoup de gens de toute façon.
J'ai essayé beaucoup et la façon la plus efficace était d'ajouter ces lignes à mon ProgressBar dans le fichier .xml:

            android:indeterminate="true"
            android:indeterminateTintMode="src_atop"
            android:indeterminateTint="@color/secondary"

Donc à la fin ce code, il a fait pour moi:

<ProgressBar
            android:id="@+id/progressBar"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_marginTop="50dp"
            android:layout_marginBottom="50dp"
            android:visibility="visible"
            android:indeterminate="true"
            android:indeterminateTintMode="src_atop"
            android:indeterminateTint="@color/secondary">

Cette solution fonctionne pour API 21 +

Pour ma barre de progression indéterminée (spinner) Je viens de mettre un filtre de couleur sur le calque. Fonctionne très bien et une seule ligne.

Exemple où la mise en couleur rouge:

ProgressBar spinner = new android.widget.ProgressBar(
                context,
                null,
                android.R.attr.progressBarStyle);

spinner.getIndeterminateDrawable().setColorFilter(0xFFFF0000, android.graphics.PorterDuff.Mode.MULTIPLY);

entrer image description ici

Ceci est une question ancienne, mais en utilisant le thème ne figure pas ici. Si votre thème par défaut utilise AppCompat, votre couleur de ProgressBar sera colorAccent vous avez défini.

Modification de colorAccent également changer la couleur de votre ProgressBar, mais il reflète également des changements à plusieurs endroits. Donc, si vous voulez une autre couleur juste pour un PregressBar spécifique, vous pouvez le faire en appliquant le thème à cette ProgressBar:

  • Prolongez votre thème par défaut et passer outre colorAccent

    <style name="AppTheme.WhiteAccent">
        <item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
    </style>
    
  • Et ProgressBar ajoutez l'attribut android:theme:

    android:theme="@style/AppTheme.WhiteAccent"
    

Il ressemblera à quelque chose comme ceci:

<ProgressBar
        android:id="@+id/loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="10dp"
        android:theme="@style/AppTheme.WhiteAccent" />

Alors vous êtes juste en train de changer un colorAccent pour votre ProgressBar particulier.

Remarque : L'utilisation style ne fonctionnera pas. Vous devez utiliser android:theme seulement. Vous pouvez trouver plus d'utilisation du thème ici: https://plus.google.com/u/0/ + AndroidDevelopers / messages / JXHKyhsWHAH

Toutes les API

si on utilise toutes les API suffit de créer le thème dans le style

style.xml

<resources>

    //...

    <style name="progressBarBlue" parent="@style/Theme.AppCompat">
        <item name="colorAccent">@color/blue</item>
    </style>

</resources>

et utiliser en cours

<ProgressBar
    ...
    android:theme="@style/progressBarBlue" />

niveau de l'API 21 et plus

si elle est utilisée dans le niveau de l'API 21 et plus simplement utiliser ce code:

<ProgressBar
   //...
   android:indeterminate="true"
   android:indeterminateTintMode="src_atop"
   android:indeterminateTint="@color/secondary"/>

selon certaines des suggestions, vous pouvez spécifier une forme et clipdrawable avec une couleur, sélectionnez-le. J'ai ce travail programatically. Voici comment je le fais ..

Tout d'abord assurez-vous d'importer la bibliothèque drawable ..

import android.graphics.drawable.*;

Ensuite, utilisez le code similaire ci-dessous;

ProgressBar pg = (ProgressBar)row.findViewById(R.id.progress);
final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 };
pgDrawable = new ShapeDrawable(new RoundRectShape(roundedCorners, null,null));
String MyColor = "#FF00FF";
pgDrawable.getPaint().setColor(Color.parseColor(MyColor));
ClipDrawable progress = new ClipDrawable(pgDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
pg.setProgressDrawable(progress);   
pg.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.progress_horizontal));
pg.setProgress(45);

Cela a fonctionné pour moi:

<ProgressBar
 android:indeterminateTint="#d60909"
 ... />

si indéterminés:

((ProgressBar)findViewById(R.id.progressBar))
    .getIndeterminateDrawable()
    .setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

De nos jours, en 2016, j'ai trouvé quelques dispositifs de pré-Lollipop ne respectent pas le paramètre colorAccent, donc ma solution finale pour toutes les API est maintenant le suivant:

// fixes pre-Lollipop progressBar indeterminateDrawable tinting
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {

    Drawable wrapDrawable = DrawableCompat.wrap(mProgressBar.getIndeterminateDrawable());
    DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(getContext(), android.R.color.holo_green_light));
    mProgressBar.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable));
} else {
    mProgressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(getContext(), android.R.color.holo_green_light), PorterDuff.Mode.SRC_IN);
}

Pour les points de bonus, il n'utilise pas de code désapprouvée. Essayez!

Voilà ce que je l'ai fait. A travaillé.

ProgressBar:

<ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="4"
            android:indeterminateDrawable="@drawable/progressdrawable"
           />

progressdrawable.xml: utiliser ici dégradé pour changer la couleur que vous le souhaitez. Et android: toDegrees = "X" INCRESE la valeur de X et rapide tournent progressbar. Diminution et tourner slow.Customize selon vos besoins.

<?xml version="1.0" encoding="utf-8"?>
     <rotate xmlns:android="http://schemas.android.com/apk/res/android"
            android:duration="4000"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toDegrees="360" >

            <shape
                android:innerRadius="20dp"
                android:shape="ring"
                android:thickness="4dp"
                android:useLevel="false" >
                <size
                    android:height="48dp"
                    android:width="48dp" />

                <gradient
                    android:centerColor="#80ec7e2a"
                    android:centerY="0.5"
                    android:endColor="#ffec7e2a"
                    android:startColor="#00ec7e2a"
                    android:type="sweep"
                    android:useLevel="false" />
            </shape>

        </rotate>

Exemple: entrer la description d'image ici

Appuyez sur le même problème tout en travaillant sur la modification de l'apparence / sensation de la barre de progression par défaut. Voici quelques informations supplémentaires qui nous l'espérons aider les gens:)

  • Le nom du fichier xml doit contenir que des caractères: a-z0-9_.
  • (pas de majuscules.!)
  • Pour référencer votre "drawable" il est R.drawable.filename
  • Pour remplacer l'apparence par défaut, vous utilisez myProgressBar.setProgressDrawable(...), mais vous avez besoin ne peut pas simplement se référer à votre mise en page personnalisée comme R.drawable.filename, vous devez le récupérer comme Drawable:
    Resources res = getResources();
    myProgressBar.setProgressDrawable(res.getDrawable(R.drawable.filename);
    
  • Vous devez définir le style avant de progrès / progrès secondaire / max (réglage par la suite pour moi a entraîné une barre de progression « vide »)

Il y a probablement une chose qui n'a pas été mentionné dans cette réponse:

Si votre thème est héritant de Theme.AppCompat, ProgressBar prendra la couleur que vous avez défini comme "colorAccent" dans votre thème.

Ainsi, en utilisant ..

  

<item name="colorAccent">@color/custom_color</item>

.. teinte sera la couleur de la barre de progression du @color/custom_color automagiquement.

Comment je l'ai fait dans ProgressBar horizontal:

    LayerDrawable layerDrawable = (LayerDrawable) progressBar.getProgressDrawable();
    Drawable progressDrawable = layerDrawable.findDrawableByLayerId(android.R.id.progress);
    progressDrawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);

Vous pouvez essayer de changer vos styles, des thèmes, ou en utilisant android: indeterminateTint = « couleur @ / yourColor » partout où vous voulez, mais il n'y a qu'une seule façon o faire qui fonctionne sur toutes les versions SKD Android:

Si vous barre de progression n'est pas indéterminée, s'il vous plaît utiliser:

progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(context, R.color.yourColor), PorterDuff.Mode.SRC_IN );

Si vous barre de progression est indéterminée, s'il vous plaît utiliser:

progressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(getContext(), R.color.yourColor), PorterDuff.Mode.SRC_IN );

Il est triste que Android est un tel gâchis!

android:progressTint="#ffffff" 

Solution si vous Simplest voulez changer la couleur dans le fichier xml de mise en page, utilisez le code ci-dessous et utilisez indeterminateTint propriété pour la couleur désirée.

    <ProgressBar
      android:id="@+id/progressBar"
      style="?android:attr/progressBarStyle"
      android:layout_width="wrap_content"
      android:indeterminate="true"
      android:indeterminateTintMode="src_atop"
      android:indeterminateTint="#ddbd4e"
      android:layout_height="wrap_content"
      android:layout_marginBottom="20dp"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true" />

Cette solution a fonctionné pour moi:

<style name="Progressbar.White" parent="AppTheme">
    <item name="colorControlActivated">@color/white</item>
</style>

<ProgressBar
    android:layout_width="@dimen/d_40"
    android:layout_height="@dimen/d_40"
    android:indeterminate="true"
    android:theme="@style/Progressbar.White"/>

Encore une petite chose, la solution de thème ne fonctionne si vous héritez d'un thème de base, donc pour l'application compacter votre thème devrait être:

<style name="AppTheme.Custom" parent="@style/Theme.AppCompat">
    <item name="colorAccent">@color/custom</item>
</style>

Et puis configurer dans la barre de progression thème

<ProgressBar
    android:id="@+id/progressCircle_progressBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:theme="@style/AppTheme.Custom"
    android:indeterminate="true"/>

Publié à ajouter des informations sur les réponses PaulieG , depuis ateiob m'a demandé d'expliquer quelque chose ...


Je peux dire qu'il ya (ou du moins était, au moment de l'écriture quand je regardais cette version actuelle du code source Android) un bug / problème / optimisation dans le code ProgressBar qui ne tient pas compte d'une tentative de définir les progrès à une valeur, il est déjà.

  • i.e.. si des progrès = 45, et vous essayez de le mettre à 45, le code ne fait rien, et ne redessiner les progrès .

Après avoir appelé ProgressBar.setProgressDrawable(), votre barre de progression sera vide (parce que vous avez changé la partie drawable).

Cela signifie que vous devez définir le progrès et le redessiner. Mais si vous venez de définir les progrès à une valeur préservée, il ne fera rien.

Vous devez définir à 0, puis à la valeur « vieux » à nouveau, et la barre redessiner.


Donc, pour résumer:

  • préserver la valeur de progrès "vieux"
  • mettre à jour la drawable / couleur (blanc fait bar)
  • réinitialiser les progrès à 0 (sinon la ligne suivante ne fait rien)
  • réinitialiser les progrès à la valeur "anciens" (bar fixe)
  • invalidate

est une méthode ci-dessous je qui fait cela:

protected void onResume()
{
    super.onResume();
    progBar = (ProgressBar) findViewById(R.id.progress_base);

    int oldProgress = progBar.getProgress();

    // define new drawable/colour
    final float[] roundedCorners = new float[]
        { 5, 5, 5, 5, 5, 5, 5, 5 };
    ShapeDrawable shape = new ShapeDrawable(new RoundRectShape(
        roundedCorners, null, null));
    String MyColor = "#FF00FF";
    shape.getPaint().setColor(Color.parseColor(MyColor));
    ClipDrawable clip = new ClipDrawable(shape, Gravity.LEFT,
        ClipDrawable.HORIZONTAL);
    progBar.setProgressDrawable(clip);

    progBar.setBackgroundDrawable(getResources().getDrawable(
        android.R.drawable.progress_horizontal));

    // work around: setProgress() ignores a change to the same value
    progBar.setProgress(0);
    progBar.setProgress(oldProgress);

    progBar.invalidate();
}

En ce qui concerne la solution de HappyEngineer, je pense qu'il était une solution similaire, pour définir manuellement le « progrès » offset. Dans les deux cas, le code ci-dessus devrait fonctionner pour vous.

Pour une ProgressBar de style horizontal J'utilise:

import android.widget.ProgressBar;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.ClipDrawable;
import android.view.Gravity;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;

public void setColours(ProgressBar progressBar,
                        int bgCol1, int bgCol2, 
                        int fg1Col1, int fg1Col2, int value1,
                        int fg2Col1, int fg2Col2, int value2)
  {
    //If solid colours are required for an element, then set
    //that elements Col1 param s the same as its Col2 param
    //(eg fg1Col1 == fg1Col2).

    //fgGradDirection and/or bgGradDirection could be parameters
    //if you require other gradient directions eg LEFT_RIGHT.

    GradientDrawable.Orientation fgGradDirection
        = GradientDrawable.Orientation.TOP_BOTTOM;
    GradientDrawable.Orientation bgGradDirection
        = GradientDrawable.Orientation.TOP_BOTTOM;

    //Background
    GradientDrawable bgGradDrawable = new GradientDrawable(
            bgGradDirection, new int[]{bgCol1, bgCol2});
    bgGradDrawable.setShape(GradientDrawable.RECTANGLE);
    bgGradDrawable.setCornerRadius(5);
    ClipDrawable bgclip = new ClipDrawable(
            bgGradDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);     
    bgclip.setLevel(10000);

    //SecondaryProgress
    GradientDrawable fg2GradDrawable = new GradientDrawable(
            fgGradDirection, new int[]{fg2Col1, fg2Col2});
    fg2GradDrawable.setShape(GradientDrawable.RECTANGLE);
    fg2GradDrawable.setCornerRadius(5);
    ClipDrawable fg2clip = new ClipDrawable(
            fg2GradDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);        

    //Progress
    GradientDrawable fg1GradDrawable = new GradientDrawable(
            fgGradDirection, new int[]{fg1Col1, fg1Col2});
    fg1GradDrawable.setShape(GradientDrawable.RECTANGLE);
    fg1GradDrawable.setCornerRadius(5);
    ClipDrawable fg1clip = new ClipDrawable(
            fg1GradDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);        

    //Setup LayerDrawable and assign to progressBar
    Drawable[] progressDrawables = {bgclip, fg2clip, fg1clip};
    LayerDrawable progressLayerDrawable = new LayerDrawable(progressDrawables);     
    progressLayerDrawable.setId(0, android.R.id.background);
    progressLayerDrawable.setId(1, android.R.id.secondaryProgress);
    progressLayerDrawable.setId(2, android.R.id.progress);

    //Copy the existing ProgressDrawable bounds to the new one.
    Rect bounds = progressBar.getProgressDrawable().getBounds();
    progressBar.setProgressDrawable(progressLayerDrawable);     
    progressBar.getProgressDrawable().setBounds(bounds);

    // setProgress() ignores a change to the same value, so:
    if (value1 == 0)
        progressBar.setProgress(1);
    else
        progressBar.setProgress(0);
    progressBar.setProgress(value1);

    // setSecondaryProgress() ignores a change to the same value, so:
    if (value2 == 0)
        progressBar.setSecondaryProgress(1);
    else
        progressBar.setSecondaryProgress(0);
    progressBar.setSecondaryProgress(value2);

    //now force a redraw
    progressBar.invalidate();
  }

Un appel exemple serait:

  setColours(myProgressBar, 
          0xff303030,   //bgCol1  grey 
          0xff909090,   //bgCol2  lighter grey 
          0xff0000FF,   //fg1Col1 blue 
          0xffFFFFFF,   //fg1Col2 white
          50,           //value1
          0xffFF0000,   //fg2Col1 red 
          0xffFFFFFF,   //fg2Col2 white
          75);          //value2

Si vous ne avez pas besoin du « progrès secondaire » valeur2 simplement mis à valeur1.

Voici le code pour changer la couleur de ProgressBar par programatically.

ProgressBar progressBar = (ProgressBar) findViewById(R.id.pb_listProgressBar);
int colorCodeDark = Color.parseColor("#F44336");
progressBar.setIndeterminateTintList(ColorStateList.valueOf(colorCodeDark));
ProgressBar freeRamPb = findViewById(R.id.free_ram_progress_bar);

freeRamPb.getProgressDrawable().setColorFilter(
Color.BLUE, android.graphics.PorterDuff.Mode.SRC_IN);
ProgressBar bar;

private Handler progressBarHandler = new Handler();

GradientDrawable progressGradientDrawable = new GradientDrawable(
        GradientDrawable.Orientation.LEFT_RIGHT, new int[]{
                0xff1e90ff,0xff006ab6,0xff367ba8});
ClipDrawable progressClipDrawable = new ClipDrawable(
        progressGradientDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
Drawable[] progressDrawables = {
        new ColorDrawable(0xffffffff),
        progressClipDrawable, progressClipDrawable};
LayerDrawable progressLayerDrawable = new LayerDrawable(progressDrawables);


int status = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // TODO Auto-generated method stub
    setContentView(R.layout.startup);

    bar = (ProgressBar) findViewById(R.id.start_page_progressBar);
    bar.setProgress(0);
    bar.setMax(100);

    progressLayerDrawable.setId(0, android.R.id.background);
    progressLayerDrawable.setId(1, android.R.id.secondaryProgress);
    progressLayerDrawable.setId(2, android.R.id.progress);

    bar.setProgressDrawable(progressLayerDrawable);
}

Cela m'a aidé à définir une couleur personnalisée à progressbar par le code. Hope it helps

Comme par mahomet-adil suggéré pour SDK ver 21 ci-dessus et

android:indeterminateTint="@color/orange"

dans Works XML pour moi, est assez facile.

Il est si simple en utilisant attr, si vous faites affaire avec des applications multistyle:

essayez de cette façon:

Déclare ci-dessous attrs.xml attribut

 <attr name="circularProgressTheme" format="reference"></attr>

Coller ci-dessous le code dans styles.xml

 <style name="ProgressThemeWhite" parent="ThemeOverlay.AppCompat.Light">
        <item name="colorAccent">#FF0000</item>
    </style>

    <style name="circularProgressThemeWhite">
        <item name="android:theme">@style/ProgressThemeWhite</item>
    </style>


  <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">

   <item name="circularProgressTheme">@style/circularProgressThemeWhite</item>

 </style>

utiliser la barre de progression comme ci-dessous

  <ProgressBar
        style="?attr/circularProgressTheme"
        android:id="@+id/commonProgress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="visible"/>

bar style matériel personnalisé progrès horizontal:

Pour modifier la couleur de fond et le progrès de la barre de progression horizontale.

<style name="MyProgressBar" parent="@style/Widget.AppCompat.ProgressBar.Horizontal">
    <item name="android:progressBackgroundTint">#69f0ae</item>
    <item name="android:progressTint">#b71c1c</item>
    <item name="android:minWidth">200dp</item>
</style>

Appliquer à la barre de progression en définissant attribut de style, pour les styles de matériel personnalisé et contrôle de barre de progression personnalisée http://www.zoftino.com/android-progressbar-and-custom-progressbar-examples

Pour modifier la couleur ProgressBar horizontale (en Kotlin):

fun tintHorizontalProgress(progress: ProgressBar, @ColorInt color: Int = ContextCompat.getColor(progress.context, R.color.colorPrimary)){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        progress.progressTintList = ColorStateList.valueOf(color)
    } else{
        val layerDrawable = progress.progressDrawable as? LayerDrawable
        val progressDrawable = layerDrawable?.findDrawableByLayerId(android.R.id.progress)
        progressDrawable?.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
    }
}

Pour modifier la couleur ProgressBar indéterminé:

fun tintIndeterminateProgress(progress: ProgressBar, @ColorInt color: Int = ContextCompat.getColor(progress.context, R.color.colorPrimary)){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        progress.indeterminateTintList = ColorStateList.valueOf(color)
    } else {
        (progress.indeterminateDrawable as? LayerDrawable)?.apply {
            if (numberOfLayers >= 2) {
                setId(0, android.R.id.progress)
                setId(1, android.R.id.secondaryProgress)
                val progressDrawable = findDrawableByLayerId(android.R.id.progress).mutate()
                progressDrawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP)
            }
        }
    }
}

Et finalement teinter normalement ProgressBars pré-sucettes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top