J'essaie de définir le remplissage dans un <shape>
déclaré dans un fichier/une présentation XML. Mais quoi que je définisse, rien ne change concernant le rembourrage. Si je modifie d'autres propriétés, je vois les effets sur l'interface utilisateur. Mais cela ne fonctionne pas avec le rembourrage. Pourriez-vous nous indiquer les raisons possibles pour lesquelles cela pourrait se produire?
Voici la forme XML que j'essaie de styliser:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<stroke Android:width="1dp"
Android:color="#ffffff"
Android:dashWidth="2dp"/>
<solid Android:color="@color/button_white_cover"/>
<corners Android:radius="11dp"/>
<padding Android:left="1dp"
Android:top="20dp"
Android:right="20dp"
Android:bottom="2dp"/>
</shape>
J'ai enfin résolu mon problème de rembourrage.
Le rembourrage n'aura donc aucun effet sur la forme. Au lieu de cela, vous devrez appliquer un rembourrage dans un autre dessinable qui l'utilisera. Donc, j'ai un dessinable qui utilise la forme et là je fais:
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/shape_below"/>
<item Android:top="10px" Android:right="10px" Android:drawable="@drawable/shape_cover"/>
</layer-list>
Donc, comme vous pouvez le voir dans la deuxième <item>
- élément J'ai défini le remplissage (en haut et à droite). Et après cela, tout fonctionne.
Merci.
Comme deux ou trois commentaires l'ont fait allusion, la meilleure approche consiste à envelopper le <shape>
dans un <item>
élément et définissez le remplissage à la place. Il existe cependant d'autres options disponibles qui sont détaillées dans le lien ci-dessous. par exemple
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:left="8dp"
Android:right="8dp"
Android:top="8dp"
Android:bottom="8dp">
<shape Android:shape="rectangle">
...
</shape>
</item>
</layer-list>
Selon vos besoins, au lieu d'utiliser une liste de couches, vous pouvez utiliser l'un des types de dessin suivants:
Pour plus d'informations sur les types de dessin disponibles, voir this Android documentation
Sources:
La réponse de Lyobomyr fonctionne, mais voici la même solution appliquée mais sans la surcharge de création d'un nouveau dessinable, minimisant ainsi l'encombrement des fichiers:
https://stackoverflow.com/a/3588976/578746
Copier/coller de la réponse par anon sur la réponse SO ci-dessus:
<item Android:left="6dp"
Android:right="6dp">
<shape Android:shape="rectangle">
<gradient Android:startColor="#ccd0d3"
Android:centerColor="#b6babd"
Android:endColor="#ccd0d3"
Android:height="1px"
Android:angle="0"/>
</shape>
</item>
Vous pouvez essayer des encarts:
<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:insetBottom="2dp"
Android:insetLeft="1dp"
Android:insetRight="20dp"
Android:insetTop="20dp">
<shape Android:shape="rectangle">
<stroke
Android:width="1dp"
Android:color="#ffffff"
Android:dashWidth="2dp" />
<solid Android:color="@color/button_white_cover" />
<corners Android:radius="11dp" />
</shape>
</inset>
J'ai résolu ce problème comme ceci:
<shape Android:shape="oval" >
<stroke Android:width="4dp" Android:color="@Android:color/transparent" />
<solid Android:color="@color/colorAccent" />
</shape>
vient d'y ajouter un trait transparent.