Estou tentando fazer uma linha pontilhada. Estou usando isso agora para uma linha sólida:
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 ) );
Eu preciso de algo assim, mas pontilhado em vez de sólido. Eu gostaria de evitar fazer centenas de layouts alternando entre um layout transparente e um layout sólido.
canvas.drawLine()
. Como alternativa para desativar a aceleração de hardware, você pode usarcanvas.drawPath
.dp
vez depx
.android:layerType="software"
deve estar definido no ImageView.o efeito do caminho é definido no objeto de pintura
você pode criar todos os tipos de padrões pontilhados fornecendo mais números na matriz int [] que especifica as proporções de traço e intervalo. Esta é uma linha simples, igualmente tracejada.
fonte
Criando linha pontilhada usando XML.
Crie xml na pasta drawable e dê esse plano de fundo ao item ao qual você deseja definir a borda pontilhada.
Criando XML Background "dashed_border":
Adicionando esse plano de fundo ao item:
fonte
<corners android:radius="5dp" />
à sua forma. Veja stackoverflow.com/a/41940609/1000551 para obter mais informaçõesCrie xml (view_line_dotted.xml):
Defina como plano de fundo da sua exibição:
fonte
<item android:bottom="-1dp" android:left="-1dp" android:right="-1dp" >
, se você quiser uma linha horizontal de 1dp de espessura.android:layerType="software"
em uma exibição ou gravaçãoview.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
(consulte stackoverflow.com/questions/10843402/… ).O que fiz quando quis desenhar uma linha pontilhada é definir um dash_line.xml desenhável :
E então, no layout, apenas defina uma visualização com fundo como dash_line . Nota para incluir android: layerType = "software" , caso contrário não funcionará.
fonte
android:layerType="software"
coisa que eu estava procurando! Felicidades!Eu tenho um traço personalizado que suporta linha de traço horizontal e vertical. código abaixo:
fonte
Ao usar esta classe, você pode aplicar o efeito "tracejado e sublinhado" a várias linhas de texto. Para usar o DashPathEffect, é necessário desativar o hardwareAccelerated do seu TextView (embora o método DashPathEffect tenha um problema com o texto longo). você pode encontrar meu projeto de amostra aqui: https://github.com/jintoga/Dashed-Underlined-TextView/blob/master/Untitled.png .
Resultado:
fonte
Se você estiver procurando por uma linha vertical, use este drawable.
Os valores inferior esquerdo e superior negativos removem os lados indesejados da forma, deixando uma única linha tracejada.
Use-o em uma exibição como essa.
fonte
Eu usei o abaixo como pano de fundo para o layout:
fonte
android:shape="rectangle"
vez de linha?Eu criei uma linha pontilhada tracejada para EditText. Aqui está. Crie seu novo xml. por exemplo, dashed_border.xml Código aqui:
E use seu novo arquivo xml no seu EditText, por exemplo:
Felicidades! :)
fonte
Use um ShapeDrawable em vez de um LinearLayout e brinque com dashWidth e dashGap
http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
fonte
Melhor Solução para o Fundo Pontilhado funcionando perfeitamente
fonte
Para um efeito Pontilhado em uma Tela, defina este atributo para o objeto de pintura:
E altere o valor 30 conforme sua renderização combina com você: representa a "distância" entre cada ponto.
fonte
A única coisa que funcionou para mim e acho que é a maneira mais simples é usar um Path com um objeto de pintura como este:
Em seguida, onDraw (): (redefinição de chamada importante se você alterar esses pontos entre as chamadas ondraw, pois o Path salvará todos os movimentos)
fonte
Gostei da solução da Ruidge , mas precisava de mais controle do XML. Então mudei para Kotlin e adicionei atributos.
1) Copie a classe Kotlin:
2) Crie um arquivo attr no diretório / res e adicione este
3) Adicione um estilo ao arquivo de estilos
4) Agora você pode usar o estilo padrão
ou defina atributos em XML
fonte
Nenhuma dessas respostas funcionou para mim. A maioria dessas respostas fornece uma borda semitransparente. Para evitar isso, você precisa embrulhar seu contêiner mais uma vez com outro contêiner da sua cor preferida. Aqui está um exemplo:
Isto é o que parece
dashed_border_layout.xml
dashed_border_in.xml
dashed_border_out.xml
fonte
Não sei por que, mas as respostas votadas não funcionam para mim. Escrevo assim e funciona bem.
Defina uma visualização personalizada:
Então você pode usá-lo em seu xml:
fonte
Criei uma biblioteca com uma exibição personalizada para resolver esse problema e deve ser muito simples de usar. Consulte https://github.com/Comcast/DahDit para obter mais informações. Você pode adicionar linhas tracejadas como esta:
fonte
Semelhante ao tier777, aqui está uma solução para uma linha horizontal:
A pista é
<item android:top="-1dp">
.Para mostrar a linha tracejada em dispositivos antigos (<= API 21), você deve criar uma visualização com
android:layerType="software"
(consulte o bug potencial do ICS desenhável na linha tracejada do Android ):Também é possível adicionar o mesmo ponto de vista, sem
android:layerType="software"
quelayout-v23
para um melhor desempenho, mas não estou certo de que vai funcionar em todos os dispositivos com API 23.fonte