web-dev-qa-db-fra.com

Comment puis-je ajouter un effet de dégradé à la couleur d'arrière-plan de TextView dans un ListView?

En référence à ces questions:

L'ajout d'un effet de dégradé à TextView dans un ListView génère NPE

et

Comment changer la couleur et la police sur ListView

Je voudrais savoir comment définir l'arrière-plan d'un TextView dans un ListView avec un effet de dégradé?

Dans l'une des questions ci-dessus, j'ai fini par ajouter l'effet de dégradé au texte dans le TextView. Et après avoir parcouru la deuxième question, il semble que je ne puisse ajouter que des couleurs d'arrière-plan fixes.

Comment ajouter un dégradé à l'arrière-plan? Dois-je faire un CustomListAdapter?

33
Kazekage Gaara

Il vous suffit de créer une ressource dessinable (voir un exemple ci-dessous) et de l'ajouter à la disposition que vous avez créée pour votre ListItem.

Le dessinable (dans votre dossier res\drawable - nommez-le - listgrad.xml par exemple) pourrait ressembler à:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <gradient
      Android:startColor="@color/gradient_start"
      Android:endColor="@color/gradient_end"
      Android:angle="-270" /> 
</shape>

Vous l'ajouteriez à la mise en page de votre élément de liste (le fichier layout.xml que vous définissez pour cela) comme cet extrait de code:

<TextView
        Android:id="@+id/ranking_order"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:background="@drawable/list_grad"
        />
...
84
Booger

Une fois que vous avez créé un dégradé, vous pouvez l'appliquer à peu près à n'importe quoi, que ce soit textView, layout ou button.

Pour comprendre comment créer et utiliser un dégradé, reportez-vous à ce lien .

Pour créer un dégradé, vous devez l'ajouter au répertoire ci-dessous

enter image description here

Le code du gradient serait quelque chose comme ça -

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape>
            <gradient
                Android:startColor="#ff2d9a59"
                Android:centerColor="#ff42959a"
                Android:endColor="#ff23729a"
                Android:angle="135"/>
        </shape>
    </item>
</selector>
4
Ajit Singh

Référé d'ici: Comment puis-je créer un ListView avec des coins arrondis dans Android? (Je l'ai trouvé très utile.)

Ajoutez ce qui suit dans un fichier (par exemple gradient.xml), puis placez-le dans le répertoire (res/drawable/gradient.xml).

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" 
     Android:shape="rectangle"> 
     <gradient 
         Android:startColor="#SomeGradientBeginColor"
         Android:endColor="#SomeGradientEndColor" 
         Android:angle="270"/> 

    <corners 
         Android:bottomRightRadius="7dp" 
         Android:bottomLeftRadius="7dp" 
         Android:topLeftRadius="7dp" 
         Android:topRightRadius="7dp"/> 
</shape> 

Une fois la création de ce fichier terminée, définissez simplement l'arrière-plan de l'une des manières suivantes:

Par le code: listView.setBackgroundResource(R.drawable.customshape);

Grâce à XML, ajoutez simplement l'attribut suivant au conteneur (ex: LinearLayout ou à n'importe quel champ):

Android:background="@drawable/customshape"
1
user274294