Tengo un botón como el siguiente:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
En mi onCreate()
caso, llamo a Button01 así:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
Hay un fondo en la aplicación, y quiero establecer una opacidad en este botón de envío. ¿Cómo puedo establecer una opacidad para esta vista? ¿Es algo que puedo configurar en el lado de Java, o puedo configurar en el archivo main.xml?
En el lado de Java intenté Button01.mutate().SetAlpha(100)
, pero me dio un error.
Estoy sorprendido por las respuestas MUCHO más complicadas de todos los demás .
XML
Puede definir simplemente el alfa en la definición de color del botón (o cualquier otra vista) en su xml:
En el ejemplo anterior, el color sería un rojo parcialmente transparente.
Al definir el color de una vista, el formato puede ser
#RRGGBB
o#AARRGGBB
, dondeAA
está el valor alfa hexadecimal.FF
sería completamente opaco y00
sería totalmente transparente.Dinamicamente
Si necesita alterar dinámicamente la opacidad en su código, use
Donde el INT varía de
0
(completamente transparente) a255
(completamente opaco).fuente
android:color
atributo.background
opacidad incorrecta, no esview
opacidad. No es equivalente en muchos casos de usoSupongo que ya has encontrado la respuesta, pero si no (y para otros desarrolladores), puedes hacerlo así:
Aquí configuré la opacidad en 45. Básicamente, puede configurarla entre 0 (completamente transparente) y 255 (completamente opaca)
fuente
Lo que sugeriría que haga es crear un color ARGB personalizado en su archivo colors.xml como:
luego configure el fondo del botón con ese color:
Otra cosa que puede hacer si quiere jugar con la forma del botón es crear un recurso dibujable de Forma donde configure las propiedades del aspecto del botón:
archivo: res / drawable / rounded_corner_box.xml
Luego use eso como el fondo del botón:
fuente
De acuerdo con los documentos de Android, la vista alfa es un valor entre 0 y 1. Entonces, para configurarlo, use algo como esto:
fuente
Mucho más fácil de lo anterior. El atributo alfa predeterminado está ahí para el botón
El rango está entre 0 para una transparencia completa y 1 para una opacidad completa.
fuente
Lo anterior es algo que sé ... Creo que crear una clase de botón personalizado es la mejor idea
Nivel de API 11
Recientemente me encontré con este atributo android: alpha xml que toma un valor entre 0 y 1. El método correspondiente es setAlpha (float) .
fuente
@android:color/transparent
como fondo hará que la vista sea completamente transparente. La@android:alpha
parte parece ser un apéndice.Aunque
btnMybutton.getBackground().setAlpha(45);
es una buena idea, solo aplica alfa al fondo y no a toda la vista.Si desea aplicar alfa para ver el uso
btnMybutton.setAlpha(0.30f);
en lugar. Esto aplica opacidad a la vista. Acepta un valor entre 0 y 1.Doc dice:
fuente
Me he encontrado con este problema con ICS / JB porque los botones predeterminados para el tema Holo consisten en imágenes que son ligeramente transparentes. Para un fondo esto es especialmente notable.
Pan de jengibre vs. ICS +:
Copiar sobre todos los estados e imágenes dibujables para cada resolución y hacer que las imágenes transparentes sean sólidas es un dolor, así que he optado por una solución más sucia: envuelva el botón en un soporte que tenga un fondo blanco. Aquí hay un crudo XML dibujable (ButtonHolder) que hace exactamente eso:
Su archivo XML
ButtonHolder.xml
styles.xml
Sin embargo, esto da como resultado un borde blanco porque las imágenes del botón Holo incluyen márgenes para tener en cuenta el espacio presionado:
Entonces, la solución es darle un margen al fondo blanco (4dp funcionó para mí) y esquinas redondeadas (2dp) para ocultar completamente el blanco y hacer que el botón sea sólido:
ButtonHolder.xml
El resultado final se ve así:
Debe orientar este estilo para v14 + y ajustarlo o excluirlo para Gingerbread / Honeycomb porque sus tamaños de imagen de botón nativos son diferentes de los de ICS y JB (por ejemplo, este estilo exacto detrás de un botón de Gingerbread da como resultado un poco de blanco debajo del botón).
fuente
Para una vista, puede establecer la opacidad de la siguiente manera.
La propiedad
view.setAlpha(int)
está en desuso para la versión API mayor que 11. De ahora en adelante,.setAlpha(0.5f)
se usa la propiedad like .fuente
Para API <11 para textView color hice lo siguiente:
Un poco engorroso, pero bueno, funciona :-)
fuente
Sé que esto ya tiene muchas respuestas, pero descubrí que para los botones es más fácil crear sus propios selectores .xml y establecerlos en el fondo de dicho botón. De esa manera también puede cambiar su estado cuando se presiona o se habilita, etc. Aquí hay un fragmento rápido de uno que uso. Si desea agregar una transparencia a cualquiera de los colores, agregue un valor hexadecimal inicial (#XXcccccc). (XX == "alfa de color")
fuente