Estoy tratando de establecer el color de fondo de una Vista (en este caso, un Botón).
Yo uso este código:
// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();
Hace que el botón desaparezca de la pantalla. ¿Qué estoy haciendo mal y cuál es la forma correcta de cambiar el color de fondo en cualquier vista?
Gracias.
Respuestas:
Hiciste tu botón transparente. El primer byte es el alfa.
Tratar
v.setBackgroundColor(0xFF00FF00);
fuente
0xff00ff00
, exactamente el mismo que lo sugerido en la respuesta, excepto que también tiene el beneficio de ser legible para los humanos . La mayoría de los desarrolladores preferirían una solución legible para humanos.Cuando llama a setBackgoundColor, sobrescribe / elimina cualquier recurso de fondo existente, incluidos los bordes, esquinas, relleno, etc. Lo que desea hacer es cambiar el color del recurso de fondo existente ...
Experimente con PorterDuff.Mode. * Para obtener diferentes efectos.
fuente
Varias opciones para hacer esto ...
Establecer fondo en verde:
Establezca el fondo en verde con Alpha :
Establezca el fondo en verde con Color.GREEN constante:
Establezca el fondo en verde definiendo en Colors.xml
y usando:
y:
o el más largo sin aliento:
y:
fuente
getResources().getColor(...)
consiguió obsoleto stackoverflow.com/questions/31842983/…v.setBackgroundResource(R.color.myGreen);
cuando se usacolors.xml
invalidate
llamadas, como puede ver, lossetBackground...
métodos ya lo llaman.v.setBackgroundColor(0x00FF00);
es solo su código que dicen que no funciona. También esperaría que fuera transparente.Puede establecer el color hexadecimal en cualquier recurso con:
fuente
El código no establece el botón en verde. En cambio, hace que el botón sea totalmente invisible.
Explicación: el valor hexadecimal del color es incorrecto. Con un valor Alfa de cero, el color será invisible.
El valor hexadecimal correcto es
0xFF00FF00
para el verde de opacidad total. Cualquier valor alfa entre 00 y FF causaría transparencia.fuente
En cualquier
View
? Lo que tienes es correcto, aunque debes soltar elinvalidate()
llamada.Sin embargo, algunos
Views
ya tienen antecedentes. AButton
, por ejemplo, ya tiene un fondo: la cara del botón en sí. Este fondo es unStateListDrawable
, que puedes encontrar enandroid-2.1/data/res/drawable/btn_default.xml
en su instalación de Android SDK. Eso, a su vez, se refiere a un montón de imágenes de mapa de bits de nueve parches, disponibles en múltiples densidades. Tendría que clonar y modificar todo eso para lograr sus objetivos ecológicos.En resumen, será mejor que encuentre otro patrón de IU en lugar de intentar cambiar el fondo de a
Button
.fuente
Para configurar el primer color que se verá en la pantalla, también puede hacerlo en el layout.xml relevante (mejor diseño) agregando esta propiedad a la Vista relevante:
fuente
intenta agregar:
fuente
Yo uso en API min 16, objetivo 23
fuente
Puede usar de manera simple:
fuente
fuente
Esta pregunta habla sobre cambiar el color de fondo de una vista. En una de las respuestas, la persona explica cómo cambiar el color de fondo durante el tiempo de ejecución. Obviamente, verá cómo modificar otros objetos en la pantalla, pero esto debería darle un buen comienzo al permitirle al menos modificar el color de fondo de la vista al hacer clic en el botón.
fuente
Estableciendo con Android 6 use ContextCompact
fuente
Puede usar de manera simple:
fuente
En kotlin podrías hacerlo así:
Donde
getColorCompat()
es una función de extensión:fuente
Agrega color al valor de color anterior, por lo que tengo un color diferente.
Lo que funciona para mí es:
fuente
Vamos a suponer que tenemos un color primario en el
values=>colors.xml
que:así que si queremos usar nuestro color personalizado,
setBackgroundColor(@ColorInt int Color)
entonces solo necesitamos una anotación@SuppressLint("ResourceAsColor")
con constructor / método que se usará como:fuente
Debe pasar un
int
en el argumento.Primer ejemplo:
Segundo ejemplo
fuente
Esto debería funcionar bien:
v.setBackgroundColor(0xFF00FF00);
fuente
Intenté todas las formas anteriores. Pero no he logrado lo que necesito. Aquí está mi intento. Si está utilizando el código hexadecimal para el color y desea establecer el color como fondo de la imagen, entonces este es el código kotlin.
fuente