es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede utilizar el método setStrokeColor para el botón de material en Android.

Estoy utilizando el botón de Material con contorno en Android Studio (la versión de material es 1.4.0).
Quería cambiar el color del contorno cuando se presiona el botón. Entonces,

binding.activeButton.setOnClickListener{

binding.activeButton.setStrokeColor(Color.parseColor(” #FFFFFF”))
}

Sin embargo, no puedo usar el método “setStrokeColor”.
Dice “Referencia no resuelta: setStrokeColor”.

Todavía puedo usar “app:strokeColor=”@color/white” en el archivo XML, pero no puedo usar el método “setStrokeColor” en un archivo de actividad.
¿Cuál podría ser la razón? ¿Es debido a la versión del diseño de material?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución

    El método setStrokeColor() no está disponible en la clase OutlinedButton de la versión 1.4.0 de Material. En su lugar, puedes utilizar el siguiente código para cambiar el color del contorno del botón cuando se presiona:

    binding.activeButton.setOnTouchListener { view, event ->
        when(event.action) {
            MotionEvent.ACTION_DOWN -> {
                val color = ContextCompat.getColor(view.context, R.color.white)
                val strokeColor = ColorStateList.valueOf(color)
                view.strokeColor = strokeColor
            }
            MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
                view.strokeColor = null
            }
        }
        view.onTouchEvent(event)
    }
    

    Este código establece un OnTouchListener en el botón, el cual escucha los eventos táctiles del botón. Cuando el usuario presiona el botón (MotionEvent.ACTION_DOWN), el color del contorno del botón se establece en blanco (R.color.white). Cuando el usuario suelta el botón (MotionEvent.ACTION_UP) o cancela el toque (MotionEvent.ACTION_CANCEL), el color del contorno del botón vuelve a su color predeterminado.

    Esta solución funciona para la versión 1.4.0 de Material, así como versiones anteriores.

Comments are closed.