Existe-t-il un moyen de spécifier une forme de triangle dans un fichier xml?
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="triangle">
<stroke android:width="1dip" android:color="#FFF" />
<solid android:color="#FFF" />
</shape>
pouvons-nous faire cela avec une forme de chemin ou quelque chose? J'ai juste besoin d'un triangle équilatéral.
Merci
Réponses:
Dans cet article, je décris comment le faire. Et voici le triangle de définition XML:
Reportez-vous à mon article si quelque chose n'est pas clair ou si vous avez besoin d'explications sur la façon dont il est construit. Il est tourné un rectangle de découpe :) c'est une solution très intelligente et qui fonctionne bien.
EDIT: pour créer une flèche pointant comme -> utilisez:
Et pour créer une flèche pointant comme <- utilisez:
la source
Vous pouvez obtenir ici plus d'options.
la source
<string name="bottom_arrow">▼</string>
Vous pouvez utiliser
vector
pour faire un triangle comme celui-ciic_triangle_right.xml
Ensuite, utilisez-le comme
Pour changer la couleur et la direction, utilisez
android:tint
etandroid:rotation
Résultat
Pour changer la forme du vecteur, vous pouvez changer la largeur / hauteur du vecteur. Exemple de changement de largeur à 10dp
la source
Vous pouvez utiliser des dessins vectoriels .
Si votre API minimale est inférieure à 21, Android Studio crée automatiquement des bitmaps PNG pour ces versions inférieures au moment de la construction (voir Vector Asset Studio ). Si vous utilisez la bibliothèque de support, Android gère même les "vrais vecteurs" jusqu'à l'API 7 (plus à ce sujet dans la mise à jour de cet article en bas).
Un triangle rouge pointant vers le haut serait:
Ajoutez-le à votre mise en page et n'oubliez pas de définir clipChildren = "false" si vous faites pivoter le triangle.
Modifiez la taille (largeur / hauteur) du triangle en définissant les attributs Views layout_width / layout_height. De cette façon, vous pouvez également obtenir un triagle eqilatéral si vous faites le calcul correctement.
MISE À JOUR 25.11.2017
Si vous utilisez la bibliothèque de support, vous pouvez utiliser des vecteurs réels (à la place de la création de bitmap) aussi loin que l'API 7 . Ajoutez simplement:
faites votre
defaultConfig
dans build.gradle de votre module.Ensuite, définissez le dessinable (vector xml) comme ceci:
Tout est très bien documenté sur la page de Vector Asset Studio .
Depuis cette fonctionnalité, je travaille entièrement sans bitmaps en termes d'icônes. Cela réduit également un peu la taille de l'APK.
la source
vectorDrawables.useSupportLibrary = true
présente l'avantage supplémentaire que vous pouvez utiliser les couleurs définies danscolors.xml
, car les bitmaps sont créés pendant la construction (lorsque les couleurs définies ne sont pas disponibles).J'irais certainement pour implémenter une vue dans ce cas:
Utilisez-le dans vos mises en page comme suit:
L'utilisation de cette implémentation vous donnera le résultat suivant:
la source
La solution de Jacek Milewski fonctionne pour moi et, sur la base de sa solution, si vous avez besoin d'un triangle inversé, vous pouvez utiliser ceci:
la source
Voir la réponse ici: Flèches personnalisées sans image: Android
la source
Puis-je vous aider sans utiliser XML?
Simplement,
Disposition personnalisée (tranche):
Votre activité (exemple):
Exemple de travail:
Une autre
Calculate
fonction absolument simple qui pourrait vous intéresser.la source
Utilisation de vector drawable:
la source
L
etz
à la fin a résolu mon problème, merci!Pour ceux qui veulent une flèche triangulaire droite, c'est parti:
ÉTAPE 1: Créez un fichier XML dessinable, copiez et collez le contenu XML suivant dans votre XML dessinable. (Veuillez noter que vous pouvez utiliser n'importe quel nom pour votre fichier XML pouvant être dessiné. Pour mon cas, je le nomme "v_right_arrow")
ÉTAPE 2: Dans le XML de votre mise en page, créez une vue et liez son arrière-plan au XML dessinable que vous venez de créer à l' ÉTAPE 1 . Dans mon cas, je lie v_right_arrow à la propriété d'arrière-plan de ma vue.
Exemple de sortie:
En espérant que ça aide, bonne chance!
la source
Vous pouvez ajouter le triangle suivant en arrière-plan en utilisant le xml suivant
Toute la logique de personnalisation de la conception xml est dans
pathData
. Considérez en haut à gauche comme (0,0) et concevez la mise en page selon vos besoins. Vérifiez cette réponse.la source
la source
la source
Je n'ai jamais fait cela, mais d'après ce que j'ai compris, vous pouvez utiliser la classe PathShape: http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
la source
Je suis en retard pour faire la fête et j'ai rencontré le même problème et Google m'a indiqué ce fil StackOverflow comme premier résultat.
Voir la capture d'écran avec les limites de mise en page activées
Alors fini par créer cette classe de vue personnalisée qui peut dessiner Triangle de l'un des types suivants: -
asas
Vous pouvez simplement l'utiliser dans une mise en page XML comme celle-ci
Je sais que OP veut des solutions en solution xml, mais comme je l'ai souligné, un problème avec l'approche xml. J'espère que cela pourrait aider quelqu'un.
la source
En utilisant la solution de Jacek Milewski, j'ai fait un angle orienté vers le bas avec un fond transparent.
Vous pouvez modifier
android:pivotX
etandroid:pivotY
décaler l'angle.Usage:
Les paramètres dépendent de la taille de l'image. Par exemple, si la
ImageView
taille est de 100dp * 80dp, vous devez utiliser ces constantes:la source
J'essaie de créer une image triangulaire comme le bouton de retour de la barre de navigation Android mais je n'ai trouvé aucune solution.
Maintenant, j'ai trouvé la solution avec moi-même et j'aimerais la partager.
utilisez xml ci-dessous
la source
la source
Google fournit un triangle équilatéral ici .
Choisissez VectorDrawable pour que la taille soit flexible.
Il est intégré dans Android Studio en tant que plugin.
Si vous avez une image SVG, vous pouvez utiliser ce pour le convertir en VectorDrawable aussi.
Une fois que vous avez un VectorDrawable, changer sa couleur et sa rotation est facile comme d'autres l'ont mentionné.
la source