Ligne verticale utilisant un dessin XML

J’essaie de comprendre comment définir une ligne verticale (1dp d’épaisseur) à utiliser comme dessinable.

Pour en faire un horizontal, c’est assez simple:

    

La question est, comment rendre cette ligne verticale?

Oui, il existe des solutions de contournement, telles que dessiner une forme de rectangle de 1px d’épaisseur, mais cela complique le XML pouvant être dessiné, s’il est composé de plusieurs éléments .

Quelqu’un a eu une chance avec ça?

METTRE À JOUR

Le cas n’est toujours pas résolu. Cependant, pour quiconque sur une croisade de documentation Android – vous pourriez trouver cela utile: Manuel XML manquant d’Android

METTRE À JOUR

Je n’ai trouvé d’autre moyen que celui que j’ai marqué comme correct. Le tour est un peu “lourd”, donc si vous connaissez la réponse, n’oubliez pas de partager;)

Au lieu d’une forme, vous pouvez essayer une View :

  

Je ne l’ai utilisé que pour les lignes horizontales, mais je pense que cela fonctionnerait aussi pour les lignes verticales.

Utilisation:

  

pour une ligne horizontale.

Vous pouvez imbriquer votre forme dans une balise de rotation.

      

Cependant, le seul problème est que les parameters de disposition définis dans votre fichier XML de mise en page seront les dimensions utilisées pour dessiner la forme d’origine. Ce qui signifie que si vous voulez que votre ligne fasse 30dp de haut, vous devez définir une largeur de layout de 30dp dans votre XML de mise en page. Mais la largeur finale sera également de 30dp dans ce cas, ce qui est probablement indésirable dans la plupart des cas. Cela signifie essentiellement que la largeur et la hauteur doivent avoir la même valeur, la valeur de la longueur souhaitée pour la ligne. Je ne pouvais pas comprendre comment résoudre ce problème.

Cela semble être la solution “Android”, mais à moins qu’il n’y ait une solution ou une solution de contournement pour le problème des dimensions, cela ne fonctionnera probablement pas pour la plupart des gens. Ce dont nous avons vraiment besoin, c’est d’un atsortingbut d’orientation dans ou .

Vous pouvez également essayer de référencer un autre dessin dans les atsortingbuts de la balise de rotation, tels que:

  

Cependant, je n’ai pas testé cela et je m’attends à ce qu’il ait les mêmes problèmes.

— MODIFIER —

Oh, j’ai effectivement trouvé un correctif. Vous pouvez utiliser une marge négative dans votre fichier XML d’implantation pour vous débarrasser de l’espace supplémentaire indésirable. Tel que:

  
 < ?xml version="1.0" encoding="utf-8"?>     

Travaille pour moi . Placez-le en arrière-plan avec fill_parent ou fixe en dp hauteur

Vous pouvez utiliser l’atsortingbut rotation

         

Je suis venu avec une solution différente. L’idée est de remplir d’abord le dessin avec la couleur que vous aimez pour la ligne, puis de remplir à nouveau la zone entière avec la couleur d’arrière-plan tout en utilisant un remplissage à gauche ou à droite. Évidemment, cela ne fonctionne que pour une ligne verticale à l’extrême gauche ou à droite de votre dessin.

 < ?xml version="1.0" encoding="utf-8"?>     

J’avais besoin d’append mes vues de manière dynamic / par programmation, ce qui compliquait l’ajout d’une vue supplémentaire. Ma hauteur de vue était WRAP_CONTENT, donc je ne pouvais pas utiliser la solution rectangle. J’ai trouvé un article de blog ici sur l’extension de TextView, le remplacement de onDraw () et la peinture dans la ligne, j’ai donc implémenté cela et cela fonctionne bien. Voir mon code ci-dessous:

 public class NoteTextView extends TextView { public NoteTextView(Context context) { super(context); } private Paint paint = new Paint(); @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); paint.setColor(Color.parseColor("#F00000FF")); paint.setStrokeWidth(0); paint.setStyle(Paint.Style.FILL); canvas.drawLine(0, 0, 0, getHeight(), paint); } } 

J’avais besoin d’une ligne verticale sur la gauche, mais les parameters de la ligne de tirage sont drawLine(startX, startY, stopX, stopY, paint) pour que vous puissiez dessiner n’importe quelle ligne droite dans n’importe quelle direction. Ensuite, dans mon activité, j’ai NoteTextView note = new NoteTextView(this); J’espère que cela t’aides.

c’est très simple … d’append une ligne verticale dans Android xml …

  

Dépend où vous voulez avoir la ligne verticale, mais si vous voulez une bordure verticale par exemple, vous pouvez avoir un arrière-plan personnalisé pour une vue parent. Et vous pouvez alors définir le dessin comme ceci:

 < ?xml version="1.0" encoding="utf-8"?>              

Cet exemple créera une ligne noire fine de 1dp sur le côté droit de la vue, qui pourra être dessinée en arrière-plan.

Vous pouvez utiliser une forme mais au lieu d’une ligne, faites-la rectangle.

 android:shape="rectangle">  

et dans votre mise en page utilisez ceci …

  

Vous devrez peut-être jouer avec la largeur, en fonction de la taille des tirets, pour obtenir une seule ligne.

J’espère que cela aide Cheers

 add this in your styles.xml   then wrap this style in a linear layout where you want the vertical line, I used the vertical line as a column divider in my table.    //...................................................................    //...................................................................  //...............................................................    //...................................................................             .......... ....... ...... 

Pour faire une ligne verticale, utilisez simplement un rectangle d’une largeur de 1dp:

     

N’utilisez pas de stroke , utilisez du solid (qui est la couleur de remplissage) pour spécifier la couleur de la ligne.

Je pense que c’est la solution la plus simple:

 < ?xml version="1.0" encoding="utf-8"?>         
 < ?xml version="1.0" encoding="utf-8"?>         
  ` 

Très simple et je pense meilleure approche.

  

underline.xml

 < ?xml version="1.0" encoding="utf-8"?>