Quiero establecer el degradado como color de texto y, al mismo tiempo, quiero que el texto tenga un trazo sólido a su alrededor en un TextView . Hasta ahora, lo que he logrado es que el texto solo puede mostrar el degradado o el trazo, no ambos al mismo tiempo.
Creé una clase personalizada con TextView extendido y estoy usando los siguientes métodos:
Usando esto para dibujar un trazo:
paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(_strokeWidth); setTextColor(_strokeColor);Lo que me da este resultado:
Usando el siguiente código para agregar gradiente:
Shader textShader = new LinearGradient(0f, 0f, getWidth(), getTextSize(), gradientColorsArray, null, Shader.TileMode.CLAMP); paint.setShader(textShader);Y me da el siguiente resultado:
El problema es cuando combino los dos métodos anteriores, el trazo se dibuja pero el color del trazo es el mismo que el degradado que estoy dando al objeto de pintura.
El siguiente es el resultado que quiero lograr. Sería genial si alguien me puede guiar sobre cómo lograr los resultados deseados.
Entonces, después de esperar más de 4 días y mucha investigación, finalmente puedo lograr el resultado deseado.
El error que estaba cometiendo es que al dibujar un trazo en un objeto de pintura, configuro el color del trazo como textcolor . Lo que hice esta vez fue que creé un objeto LinearGradient() y se lo di a paint.shader mientras configuraba paintStyle(Paint.Style.Stroke) .
Paint paint = this.getPaint(); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(5f); paint.setShader(new LinearGradient(0f, 0f, getTextSize(), getTextSize(), mOutlineColor, mOutlineColor, Shader.TileMode.CLAMP)); Y después de configurar el trazo en el método onDraw() de mi clase CustomTextView , llamé a super.onDraw(canvas)
Luego creo un nuevo objeto LinearGradient() para los colores degradados de la siguiente manera:
Paint paint = this.getPaint(); paint.setStyle(Paint.Style.FILL); Shader linearShader = new LinearGradient(0f, 0f, getWidth(), getTextSize(), colors, null, Shader.TileMode.CLAMP); paint.setShader(linearShader); Finalmente llamando a super.onDraw(canvas) nuevamente y esto le da a mi vista de texto un trazo, así como un degradado como textview .
hola internet para todos
hola a tos amigos
Saludos para todos los del grupo