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:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line">
<stroke android:width="1dp" android:color="#0000FF"/>
<size android:height="50dp" />
</shape>
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 dessinable, s'il se compose de plusieurs <item>
éléments.
Quelqu'un a eu une chance avec ça?
METTRE À JOUR
L'affaire n'est toujours pas résolue. Cependant, pour quiconque participe à une croisade de documentation Android - vous pourriez trouver ceci utile: Manuel XML Android manquant
METTRE À JOUR
Je n'ai trouvé d'autre moyen que celui que j'ai marqué comme correct. Cela fait l'affaire mais semble un peu "lourd", donc si vous connaissez la réponse, n'oubliez pas de partager;)
Vous pouvez imbriquer votre forme dans une balise de rotation.
Cependant, le seul problème est que les paramètres de mise en page définis dans votre mise en page xml seront les dimensions utilisées pour dessiner la forme d'origine. Cela signifie que si vous voulez que votre ligne mesure 30dp, vous devez définir un layout_width de 30dp dans votre layout xml. Mais la largeur finale sera également de 30dp dans ce cas, ce qui est probablement indésirable dans la plupart des situations. 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 savais pas comment résoudre ce problème.
Cela semble être la solution «à la manière Android», mais à moins qu'il n'y ait une solution ou une solution de contournement pour le problème de dimensions que je mentionne, cela ne fonctionnera probablement pas pour la plupart des gens. Ce dont nous avons vraiment besoin, c'est d'un attribut d'orientation dans <shape /> ou <stroke />.
Vous pouvez également essayer de référencer un autre dessinable dans les attributs 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.
-- ÉDITER --
Oh, j'ai trouvé une solution. Vous pouvez utiliser une marge négative dans votre mise en page xml pour vous débarrasser de l'espace supplémentaire indésirable. Tel que:
la source
Vous pouvez utiliser l'attribut de rotation
la source
Travaille pour moi . Mettez-le comme arrière-plan de la vue avec fill_parent ou taille fixe en hauteur dp
la source
J'ai trouvé une solution différente. L'idée est de remplir d'abord le dessinable avec la couleur que vous aimez pour la ligne, puis de remplir à nouveau toute la zone avec la couleur d'arrière-plan tout en utilisant un rembourrage gauche ou droit. Évidemment, cela ne fonctionne que pour une ligne verticale à l'extrême gauche ou à droite de votre dessin.
la source
showDividers="middle"
). Pour obtenir un diviseur 2dp, j'avais besoin de spécifierandroid:left="3dp"
ici.@android:color/transparent
plutôt que le codage en dur@color/background_color
.wrap_content
.Je pense que c'est la solution la plus simple:
la source
android:height
àsize
si vous souhaitez contrôler également cette dimension.J'avais besoin d'ajouter mes vues de manière dynamique / par programme, donc l'ajout d'une vue supplémentaire aurait été fastidieux. Ma hauteur de vue était WRAP_CONTENT, je ne pouvais donc 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, donc j'ai mis en œuvre cela et cela fonctionne bien. Voir mon code ci-dessous:
J'avais besoin d'une ligne verticale sur la gauche, mais les paramètres de la
drawLine(startX, startY, stopX, stopY, paint)
ligne de dessin permettent de dessiner n'importe quelle ligne droite dans n'importe quelle direction de la vue. Ensuite, dans mon activité, j'espère queNoteTextView note = new NoteTextView(this);
cela aide.la source
c'est très simple ... pour ajouter une ligne verticale dans android xml ...
la source
Cela dépend de l'endroit où vous voulez avoir la ligne verticale, mais si vous voulez une bordure verticale par exemple, vous pouvez avoir la vue parent avoir un arrière-plan un dessin personnalisé. Et vous pouvez ensuite définir le dessinable comme ceci:
Cet exemple créera une fine ligne noire de 1dp sur le côté droit de la vue, qui aura ce dessinable comme arrière-plan.
la source
la source
Il semble que personne n'ait mentionné cette option:
la source
Vous pouvez utiliser une forme mais au lieu d'une ligne, faites-en un 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 la mettre en une seule ligne.
J'espère que cela aide Cheers
la source
la source
Pour faire une ligne verticale, utilisez simplement un rectangle d'une largeur de 1dp:
N'utilisez pas
stroke
, utilisezsolid
(qui est la couleur de "remplissage") pour spécifier la couleur de la ligne.la source
la source