Estoy tratando de hacer una línea punteada. Estoy usando esto ahora para una línea 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 ) );
Necesito algo como esto, pero punteado en lugar de sólido. Me gustaría evitar que cientos de diseños se alternen entre un diseño transparente y un diseño sólido.
canvas.drawLine()
. Como alternativa para deshabilitar la aceleración de hardware, puede usarcanvas.drawPath
en su lugar.dp
lugar depx
.android:layerType="software"
debe establecerse en ImageView.el efecto del camino se establece en el objeto de pintura
puede crear todo tipo de patrones de puntos al proporcionar más números en la matriz int [] que especifica las proporciones de guión y espacio. Esta es una línea simple, igualmente discontinua.
fuente
Crear línea de puntos usando XML.
Cree xml en una carpeta dibujable y dele ese fondo al elemento en el que desea establecer el borde punteado.
Crear fondo XML "dashed_border":
Agregar ese fondo al elemento:
fuente
<corners android:radius="5dp" />
a su forma. Consulte stackoverflow.com/a/41940609/1000551 para obtener más informaciónCrear xml (view_line_dotted.xml):
Establecer como fondo de su vista:
fuente
<item android:bottom="-1dp" android:left="-1dp" android:right="-1dp" >
, si quieres una línea horizontal de 1dp de grosor.android:layerType="software"
a una vista o escrituraview.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
(consulte stackoverflow.com/questions/10843402/… ).Lo que hice cuando quería dibujar una línea punteada es definir un dash_line.xml dibujable :
Y luego, en el diseño, simplemente defina una vista con fondo como dash_line . Nota para incluir android: layerType = "software" , de lo contrario no funcionará.
fuente
android:layerType="software"
Es lo que estaba buscando! ¡Salud!Tengo una línea de tablero personalizada que admite línea de tablero horizontal y vertical. código a continuación:
fuente
Al usar esta clase, puede aplicar el efecto "discontinuo y subrayado" al texto de varias líneas. Para usar DashPathEffect, debe desactivar el hardware Acelerado de su TextView (aunque el método DashPathEffect tiene un problema con el texto largo). Puede encontrar mi proyecto de muestra aquí: https://github.com/jintoga/Dashed-Underlined-TextView/blob/master/Untitled.png .
Resultado:
fuente
Si está buscando una línea vertical, use este dibujable.
Los valores negativos superiores, inferiores e izquierdos eliminan los lados no deseados de la forma dejando una sola línea discontinua.
Úselo en una vista como esta.
fuente
He usado lo siguiente como fondo para el diseño:
fuente
android:shape="rectangle"
lugar de línea?He creado una línea punteada discontinua para EditText. Aqui tienes. Crea tu nuevo xml. ej. dashed_border.xml Código aquí:
Y use su nuevo archivo xml en su EditText, por ejemplo:
¡Salud! :)
fuente
Use un ShapeDrawable en lugar de un LinearLayout y juegue con dashWidth y dashGap
http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
fuente
La mejor solución para el fondo punteado que funciona perfecto
fuente
Para un efecto punteado en un lienzo, establezca este atributo en el objeto de pintura:
Y cambie el valor 30 según su renderizado le convenga: representa la "distancia" entre cada punto.
fuente
Lo único que funcionó para mí y creo que es la forma más simple es usar una ruta con un objeto de pintura como este:
Luego onDraw (): (restablecimiento de llamada importante si cambia esos puntos entre llamadas pendientes, porque la ruta guarda todos los movimientos)
fuente
Me gustó la solución de Ruidge , pero necesitaba más control de XML. Entonces lo cambié a Kotlin y agregué atributos.
1) Copie la clase Kotlin:
2) Cree un archivo attr en el directorio / res y agréguelo
3) Agregue un estilo al archivo de estilos
4) Ahora puedes usar el estilo predeterminado
o establecer atributos en XML
fuente
Ninguna de estas respuestas funcionó para mí. La mayoría de estas respuestas le dan un borde semitransparente. Para evitar esto, debe envolver su contenedor una vez más con otro contenedor con su color preferido. Aquí hay un ejemplo:
Así es como se ve
dashed_border_layout.xml
dashed_border_in.xml
dashed_border_out.xml
fuente
No sé por qué, pero las respuestas votadas no me funcionan. Lo escribo de esta manera y funciona bien.
Definir una vista personalizada:
Entonces puedes usarlo en tu xml:
fuente
He creado una biblioteca con una vista personalizada para resolver este problema, y debería ser muy simple de usar. Vea https://github.com/Comcast/DahDit para más información. Puede agregar líneas discontinuas como esta:
fuente
Similar a tier777 aquí hay una solución para una línea horizontal:
La idea es
<item android:top="-1dp">
.Para mostrar la línea punteada en dispositivos antiguos (<= API 21), debe crear una vista con
android:layerType="software"
(vea el posible error de ICS potencial de la línea punteada de Android ):También se puede añadir el mismo punto de vista, sin
android:layerType="software"
quelayout-v23
para un mejor rendimiento, pero no estoy seguro de que funcionará en todos los dispositivos con API 23.fuente