Estou tentando descobrir como definir uma linha vertical (1dp de espessura) para ser usada como um drawable.
Para fazer uma horizontal, é bem direto:
<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>
A questão é: como tornar essa linha vertical?
Sim, existem soluções alternativas, como desenhar um retângulo com 1px de espessura, mas isso complica o XML desenhável, se ele consiste em vários <item>
elementos.
Alguém teve alguma chance com isso?
ATUALIZAR
O caso ainda não foi resolvido. No entanto, para qualquer pessoa em uma cruzada de documentação do Android - você pode achar útil: Manual XML XML ausente do Android
ATUALIZAR
Não encontrei outro caminho além do que marquei como correto. Ele faz o truque, embora pareça um pouco "pesado"; portanto, se você souber a resposta, não se esqueça de compartilhar;)
Você pode aninhar sua forma dentro de uma marca de rotação.
No entanto, o único problema é que os parâmetros de layout definidos no xml do layout serão as dimensões usadas para desenhar a forma original. Ou seja, se você deseja que sua linha tenha 30dp de altura, é necessário definir uma largura de layout de 30dp no seu xml de layout. Mas a largura final também será de 30dp nesse caso, o que provavelmente é indesejável para a maioria das situações. Essencialmente, isso significa que largura e altura devem ter o mesmo valor, o valor do comprimento desejado para a linha. Eu não conseguia descobrir como consertar isso.
Essa parece ser a solução "android way", mas, a menos que haja alguma correção ou solução alternativa para o problema de dimensões que mencionei, isso provavelmente não funcionará para a maioria das pessoas. O que realmente precisamos é de um atributo de orientação em <shape /> ou <stroke />.
Você também pode tentar referenciar outro drawable nos atributos da tag rotate, como:
No entanto, eu não testei isso e espero que ele tenha os mesmos problemas.
- EDITAR -
Oh, eu realmente descobri uma correção. Você pode usar uma margem negativa no xml do layout para se livrar do espaço extra indesejado. Tal como:
fonte
Você pode usar o atributo rotate
fonte
Funciona para mim . Coloque-o como plano de fundo com fill_parent ou tamanho fixo em dp height
fonte
Eu vim com uma solução diferente. A idéia é preencher o desenho primeiro com a cor que você deseja que a linha seja e, em seguida, preencher toda a área com a cor de fundo enquanto usa o preenchimento esquerdo ou direito. Obviamente, isso só funciona para uma linha vertical na extrema esquerda ou direita do seu drawable.
fonte
showDividers="middle"
). Para obter um divisor 2dp, eu precisava especificarandroid:left="3dp"
aqui.@android:color/transparent
vez de codificar@color/background_color
.wrap_content
.Eu acho que esta é a solução mais simples:
fonte
android:height
asize
se você deseja controlar também essa dimensão.Eu precisava adicionar meus pontos de vista de forma dinâmica / programática, portanto, adicionar um ponto de vista extra teria sido complicado. A altura da minha vista era WRAP_CONTENT, então não pude usar a solução retangular. Eu encontrei um blog post aqui sobre como estender TextView, substituindo onDraw () e pintura na linha, então eu implementei isso e ele funciona bem. Veja meu código abaixo:
Eu precisava de uma linha vertical à esquerda, mas os parâmetros da
drawLine(startX, startY, stopX, stopY, paint)
linha de tração são para que você possa desenhar qualquer linha reta em qualquer direção da vista. Então, na minha atividade,NoteTextView note = new NoteTextView(this);
espero que isso ajude.fonte
é muito simples ... adicionar uma linha vertical no android xml ...
fonte
Depende de onde você deseja ter a linha vertical, mas se você quiser uma borda vertical, por exemplo, a visualização principal pode ter um plano de fundo que pode ser desenhado como um desenho personalizado. E você pode definir o drawable assim:
Este exemplo criará uma linha preta fina de 1dp no lado direito da vista, que terá esse desenho como plano de fundo.
fonte
fonte
Parece que ninguém mencionou esta opção:
fonte
Você pode usar uma forma, mas em vez de uma linha, retângulo.
e No seu layout, use isso ...
Talvez você precise brincar com a largura, dependendo do tamanho dos traços, para colocá-la em uma única linha.
Espero que isso ajude Felicidades
fonte
fonte
Para fazer uma linha vertical, basta usar um retângulo com largura de 1dp:
Não use
stroke
, usesolid
(que é a cor "preenchimento") para especificar a cor da linha.fonte
fonte