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
?
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"
/>
...
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
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>
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"