J'essaie de faire une ligne pointillée. J'utilise ceci en ce moment pour une ligne continue:
LinearLayout divider = new LinearLayout( this );
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, 2 );
divider.setLayoutParams( params );
divider.setBackgroundColor( getResources().getColor( R.color.grey ) );
J'ai besoin de quelque chose comme ça, mais pointillé au lieu de solide. Je voudrais éviter de faire des centaines de mises en page alternant entre une mise en page transparente et une mise en page solide.
canvas.drawLine()
. Comme alternative pour désactiver l'accélération matérielle, vous pouvez utiliser à lacanvas.drawPath
place.dp
au lieu depx
.android:layerType="software"
doit être défini sur ImageView.l'effet de trajectoire est défini sur l'objet de peinture
vous pouvez créer toutes sortes de motifs en pointillés en fournissant plus de nombres dans le tableau int [], il spécifie les rapports de tiret et d'espace. Il s'agit d'une ligne simple, également en pointillés.
la source
Création d'une ligne pointillée à l'aide de XML.
Créez du xml dans un dossier dessinable et donnez cet arrière-plan à l'élément auquel vous souhaitez définir une bordure en pointillés.
Création d'un arrière-plan XML "dashed_border":
Ajout de cet arrière-plan à l'élément:
la source
<corners android:radius="5dp" />
à votre forme. Voir stackoverflow.com/a/41940609/1000551 pour plus d'informationsCréez du xml (view_line_dotted.xml):
Définissez comme arrière-plan de votre vue:
la source
<item android:bottom="-1dp" android:left="-1dp" android:right="-1dp" >
, si vous voulez une épaisseur de ligne horizontale 1dp.android:layerType="software"
dans une vue ou écrivezview.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
(voir stackoverflow.com/questions/10843402/… ).Ce que j'ai fait quand j'ai voulu dessiner une ligne pointillée, c'est définir un dash_line.xml dessinable :
Et puis dans la mise en page, définissez simplement une vue avec un arrière-plan en tant que dash_line . Remarque pour inclure android: layerType = "software" , sinon cela ne fonctionnera pas.
la source
android:layerType="software"
la chose que je cherchais! À votre santé!J'ai personnalisé une ligne de bord qui prend en charge la ligne de tiret horizontale et verticale. code ci-dessous:
la source
En utilisant cette classe, vous pouvez appliquer un effet "en pointillés et souligné" au texte sur plusieurs lignes. pour utiliser DashPathEffect, vous devez désactiver hardwareAccelerated de votre TextView (bien que la méthode DashPathEffect ait un problème avec le texte long). vous pouvez trouver mon exemple de projet ici: https://github.com/jintoga/Dashed-Underlined-TextView/blob/master/Untitled.png .
Résultat:
la source
Si vous cherchez une ligne verticale, utilisez ce dessinable.
Les valeurs négatives en haut en bas et à gauche suppriment les côtés indésirables de la forme, laissant une seule ligne pointillée.
Utilisez-le dans une vue comme celle-ci.
la source
J'ai utilisé ce qui suit comme arrière-plan pour la mise en page:
la source
android:shape="rectangle"
au lieu de la ligne?J'ai créé une ligne pointillée en pointillés pour EditText. Voici. Créez votre nouveau xml. par exemple dashed_border.xml Code ici:
Et utilisez votre nouveau fichier xml dans votre EditText par exemple:
À votre santé! :)
la source
Utilisez un ShapeDrawable au lieu d'un LinearLayout et jouez avec dashWidth et dashGap
http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
la source
Meilleure solution pour un fond pointillé fonctionnant parfaitement
la source
Pour un effet pointillé sur un canevas, définissez cet attribut sur l'objet de peinture:
Et modifiez la valeur 30 selon votre rendu: il représente la "distance" entre chaque point.
la source
La seule chose qui a fonctionné pour moi et je pense que c'est la manière la plus simple d'utiliser un chemin avec un objet de peinture comme celui-ci:
Puis onDraw (): (réinitialisation importante des appels si vous changez ces points entre les appels en attente, car Path enregistre tous les mouvements)
la source
J'ai aimé la solution de Ruidge , mais j'avais besoin de plus de contrôle à partir de XML. Je l'ai donc changé en Kotlin et ajouté des attributs.
1) Copiez la classe Kotlin:
2) Créez un fichier attr dans le répertoire / res et ajoutez-le
3) Ajoutez un style au fichier de styles
4) Vous pouvez maintenant utiliser le style par défaut
ou définir des attributs en XML
la source
Aucune de ces réponses n'a fonctionné pour moi. La plupart de ces réponses vous donnent une bordure semi-transparente. Pour éviter cela, vous devez envelopper à nouveau votre contenant avec un autre contenant de votre couleur préférée. Voici un exemple:
Voilà à quoi ça ressemble
dashed_border_layout.xml
dashed_border_in.xml
dashed_border_out.xml
la source
Je ne sais pas pourquoi mais les réponses votées ne fonctionnent pas pour moi. Je l'écris de cette façon et fonctionne bien.
Définissez une vue personnalisée:
Ensuite, vous pouvez l'utiliser dans votre xml:
la source
J'ai créé une bibliothèque avec une vue personnalisée pour résoudre ce problème, et elle devrait être très simple à utiliser. Voir https://github.com/Comcast/DahDit pour plus. Vous pouvez ajouter des lignes en pointillés comme ceci:
la source
Similaire à tier777, voici une solution pour une ligne horizontale:
L'indice est
<item android:top="-1dp">
.Afin d'afficher la ligne pointillée sur les anciens appareils (<= API 21), vous devez créer une vue avec
android:layerType="software"
(voir Bug potentiel ICS sur la ligne pointillée Android ):Vous pouvez également ajouter la même vue sans
android:layerType="software"
pourlayout-v23
de meilleures performances, mais je ne suis pas sûr que cela fonctionnera sur tous les appareils avec API 23.la source