Estoy confundido sobre los estilos de botones para el diseño de materiales. Me gustaría obtener botones con relieve coloridos como en el enlace adjunto, como los botones "forzar detención" y "desinstalar" que se ven en la sección de uso. ¿Hay estilos disponibles o necesito definirlos?
http://www.google.com/design/spec/components/buttons.html#buttons-usage
No pude encontrar los estilos de botón predeterminados.
Ejemplo:
<Button style="@style/PrimaryButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate"
android:id="@+id/button3"
android:layout_below="@+id/editText5"
android:layout_alignEnd="@+id/editText5"
android:enabled="true" />
Si trato de cambiar el color de fondo del botón agregando
android:background="@color/primary"
todos los estilos desaparecen, como la animación táctil, la sombra, la esquina redondeada, etc.
Respuestas:
Agregaré mi respuesta ya que no uso ninguna de las otras respuestas proporcionadas.
Con Support Library v7, todos los estilos ya están definidos y listos para usar, para los botones estándar, todos estos estilos están disponibles:
Widget.AppCompat.Button
:Widget.AppCompat.Button.Colored
:Widget.AppCompat.Button.Borderless
Widget.AppCompat.Button.Borderless.Colored
:Para responder a la pregunta, el estilo a usar es
Cómo cambiar el color
Para toda la aplicación:
El atributo gestiona el color de todos los controles de la interfaz de usuario (no solo botones, sino también botones de acción flotantes, casillas de verificación, etc.)
colorAccent
como se explica aquí . Puede modificar este estilo y aplicar su propio color en la definición de su tema:Para un botón específico:
Si necesita cambiar el estilo de un botón específico, puede definir un nuevo estilo, heredando uno de los estilos principales descritos anteriormente. En el siguiente ejemplo, acabo de cambiar el fondo y los colores de fuente:
Entonces solo necesita aplicar este nuevo estilo en el botón con:
Para establecer un diseño de botón predeterminado en un diseño, agregue esta línea al tema styles.xml:
¿Dónde
@style/btn
está el tema de tu botón? Esto establece el estilo del botón para todos los botones en un diseño con un tema específicofuente
colorButtonNormal
attr no funciona para mí en Android 4.1.2. No se puede establecer el color del botón (seandroid:background
rompe el estilo del material del botón).style=""
en lugar deAndroid:theme=""
cambiar a este último problema que se fija para míLa solución más simple
Paso 1: use la última biblioteca de soporte
Paso 2: use AppCompatActivity como su clase de actividad principal
Paso 3: use el espacio de nombres de la aplicación en su archivo XML de diseño
Paso 4: use AppCompatButton en lugar de Button
fuente
android.support.v7.widget.AppCompatButton
porque la herramienta de compilación la usa automáticamente cuando especificaButton
textColor
anula el color del texto para el estado deshabilitado .Widget.MaterialComponents.Button.OutlinedButton
.Si te entiendo correctamente, quieres hacer algo como esto:
En tal caso, debería ser suficiente para usar:
O para API menos de 21:
Además de usar Tutorial de tema material .
La variante animada está aquí .
fuente
Así es como obtuve lo que quería.
Primero, hice un botón (in
styles.xml
):La ondulación y el fondo para el botón, como dibujable
primary_round.xml
:Esto agregó el efecto dominó que estaba buscando.
fuente
Agregue la dependencia a su
build.gradle
:Luego agregue el
MaterialButton
a su diseño:Puede consultar la documentación completa aquí y la API aquí .
Para cambiar el color de fondo tienes 2 opciones.
backgroundTint
atributo.Algo como:
materialThemeOverlay
atributo.Algo como:
La opción # 2 requiere el
'com.google.android.material:material:1.1.0'.
Biblioteca de soporte antigua:
Con la nueva Biblioteca de soporte 28.0.0 , la Biblioteca de diseño ahora contiene el
MaterialButton
.Puede agregar este botón a nuestro archivo de diseño con:
Por defecto, esta clase usará el color de acento de su tema para el color de fondo lleno de botones junto con el blanco para el color de texto de los botones.
Puede personalizar el botón con estos atributos:
app:rippleColor
: El color que se utilizará para el efecto de ondulación del botónapp:backgroundTint
: Se utiliza para aplicar un tinte al fondo del botón. Si desea cambiar el color de fondo del botón, use este atributo en lugar del fondo.app:strokeColor
: El color que se utilizará para el trazo del botónapp:strokeWidth
: El ancho que se utilizará para la pulsación del botónapp:cornerRadius
: Se utiliza para definir el radio utilizado para las esquinas del botón.fuente
Aquí hay una muestra que ayudará a aplicar el estilo del botón de manera consistente en su aplicación.
Aquí hay un tema de muestra que utilicé con los estilos específicos.
Así es como definí la forma y los efectos del botón dentro de la carpeta res / drawable-v21 ...
Las esquinas de 2dp deben ser consistentes con el tema Material
fuente
Al lado
android.support.design.button.MaterialButton
( que mencionó Gabriele Mariotti ),También hay otro
Button
widget llamadocom.google.android.material.button.MaterialButton
que tiene diferentes estilos y se extiende desdeAppCompatButton
:Lleno, elevado
Button
(predeterminado) :Lleno, sin levadura
Button
:Texto
Button
:Ícono
Button
:Un texto
Button
con un icono ::Leer: https://material.io/develop/android/components/material-button/
fuente
app:backgroundTint
yapp:backgroundTintMode
de la documentación .Probé muchas respuestas y libs de terceros, pero ninguna estaba manteniendo el borde y aumentó el efecto en pre-lollipop mientras tenía el efecto dominó en lollipop sin inconvenientes. Aquí está mi solución final que combina varias respuestas (el borde / en relieve no se representa bien en los gifs debido a la profundidad de color en escala de grises):
Chupete
Pre-piruleta
build.gradle
layout.xml
drawable-v21 / btn_bg.xml
drawable / btn_bg.xml
La actividad está en Crear
fuente
1) Puede crear un botón de esquina redondeada definiendo xml dibujable y puede aumentar o disminuir el radio para aumentar o disminuir la redondez de la esquina del botón. Establezca este xml dibujable como fondo del botón.
2) Para cambiar la animación predeterminada de sombra y transición de sombra entre estados de botón, debe definir el selector y aplicarlo al botón usando la propiedad android: stateListAnimator. Para una referencia completa de personalización de botones: http://www.zoftino.com/android-button
fuente
Acabo de crear una biblioteca de Android, que le permite modificar fácilmente el color del botón y el color ondulado
https://github.com/xgc1986/RippleButton
No necesita crear un estilo para cada botón que desee con un color diferente, lo que le permite personalizar los colores al azar
fuente
rippleColor has already been defined
algunos usuarios ya lo mencionaron en los 'problemas'puede darle aviación a la vista agregándole eje z y puede tener sombra predeterminada. Esta característica se proporcionó en la vista previa L y estará disponible después de su lanzamiento. Por ahora, simplemente puede agregar una imagen que le da este aspecto para el fondo del botón
fuente