Diseño de material de Android Estilos de botón

Estoy confundido en estilos del botón para el diseño material. Me gustaría obtener coloridos botones elevados como en el enlace adjunto., Como la "fuerza de detener" y "desinstalar" botones visto 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 botones 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 intento cambiar el color de fondo del botón añadiendo

  android:background="@color/primary" 

Todos los estilos desaparecen, como la animación táctil, la sombra, la esquina redondeada, etc.

    Voy a añadir mi respuesta ya que no uso ninguna de las otras respuestas proporcionadas.

    Con la Biblioteca de Soporte v7, todos los estilos están realmente ya definidos y listos para usar, para los botones estándar, todos estos estilos están disponibles:

     style="@style/Widget.AppCompat.Button" style="@style/Widget.AppCompat.Button.Colored" style="@style/Widget.AppCompat.Button.Borderless" style="@style/Widget.AppCompat.Button.Borderless.Colored" 

    Widget.AppCompat.Button : Introduzca aquí la descripción de la imagen

    Widget.AppCompat.Button.Colored : Introduzca aquí la descripción de la imagen

    Widget.AppCompat.Button.Borderless Introduzca aquí la descripción de la imagen

    Widget.AppCompat.Button.Borderless.Colored : Introduzca aquí la descripción de la imagen


    Para responder a la pregunta, el estilo a utilizar es por lo tanto

     <Button style="@style/Widget.AppCompat.Button.Colored" ....... ....... ....... android:text="Button"/> 

    Cómo cambiar el color

    Para la aplicación completa:

    El color de todos los controles de interfaz de usuario (no sólo los botones, sino también los botones de acción flotantes, las casillas de verificación, etc.) se gestiona mediante el atributo colorAccent tal como se explica aquí . Puedes modificar este estilo y aplicar tu propio color en la definición de tu tema:

     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> ... <item name="colorAccent">@color/Orange</item> </style> 

    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 ejemplo abajo sólo cambié el fondo y los colores de la fuente:

     <style name="AppTheme.Button" parent="Widget.AppCompat.Button.Colored"> <item name="colorButtonNormal">@color/Red</item> <item name="android:textColor">@color/White</item> </style> 

    Entonces sólo tiene que aplicar este nuevo estilo en el botón con:

     android:theme="@style/AppTheme.Button" 

    Para establecer un diseño de botón predeterminado en un diseño, agregue esta línea al tema styles.xml:

     <item name="buttonStyle">@style/btn</item> 

    Donde @style/btn es el tema del botón. Esto establece el estilo del botón para todos los botones de un diseño con un tema específico

    Si te entiendo correctamente, quieres hacer algo como esto:
    Introduzca aquí la descripción de la imagen

    En tal caso, debe ser lo suficiente para usar:

     <item name="android:colorButtonNormal">#2196f3</item> 

    O para API menos de 21:

     <item name="colorButtonNormal">#2196f3</item> 

    Además de usar el tema material tutorial .

    La variante animada está aquí .

    He aquí cómo conseguí lo que quería.

    En primer lugar, hizo un botón (en styles.xml ):

     <style name="Button"> <item name="android:textColor">@color/white</item> <item name="android:padding">0dp</item> <item name="android:minWidth">88dp</item> <item name="android:minHeight">36dp</item> <item name="android:layout_margin">3dp</item> <item name="android:elevation">1dp</item> <item name="android:translationZ">1dp</item> <item name="android:background">@drawable/primary_round</item> </style> 

    El ripple y el fondo para el botón, como un primary_round.xml :

     <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/primary_600"> <item> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="1dp" /> <solid android:color="@color/primary" /> </shape> </item> </ripple> 

    Esto agregó el efecto de rizo que estaba buscando.

    Aquí hay un ejemplo que le ayudará a aplicar el estilo de los botones de forma consistente en toda la aplicación.

    Aquí hay un ejemplo de tema que usé con los estilos específicos.

     <style name="MyTheme" parent="@style/Theme.AppCompat.Light"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorAccent">@color/accent</item> <item name="android:buttonStyle">@style/ButtonAppTheme</item> </style> <style name="ButtonAppTheme" parent="android:Widget.Material.Button"> <item name="android:background">@drawable/material_button</item> </style> 

    Esto es cómo definí la forma del botón y efectos dentro de la carpeta res / drawable-v21 …

     <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <item> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="2dp" /> <solid android:color="@color/primary" /> </shape> </item> </ripple> 

    2dp esquinas son para mantenerlo coherente con tema material.

    La solución más simple


    Paso 1: Utilice la biblioteca de soporte más reciente

     compile 'com.android.support:appcompat-v7:25.2.0' 

    Paso 2: Utilice AppCompatActivity como su clase de actividad principal

     public class MainActivity extends AppCompatActivity 

    Paso 3: Utilice el espacio de nombres de la aplicación en el archivo XML de presentación

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> 

    Paso 4: Utilice AppCompatButton en lugar de botón

     <android.support.v7.widget.AppCompatButton android:id="@+id/buttonAwesome" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Awesome Button" android:textColor="@color/whatever_text_color_you_want" app:backgroundTint="@color/whatever_background_color_you_want"/> 

    Introduzca aquí la descripción de la imagen

    He intentado una gran cantidad de libs de respuesta y de terceros, pero ninguno mantuvo la frontera y el efecto aumentado en pre-lollipop al tener el efecto de rizo en lollipop sin inconvenientes. Aquí está mi solución final combinando varias respuestas (border / raised no se representan bien en gifs debido a la profundidad de color en escala de grises):

    Chupete

    Introduzca aquí la descripción de la imagen

    Pre-Lollipop

    Introduzca aquí la descripción de la imagen

    Construir un gradiente

     compile 'com.android.support:cardview-v7:23.1.1' 

    Layout.xml

     <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card" card_view:cardElevation="2dp" android:layout_width="match_parent" android:layout_height="wrap_content" card_view:cardMaxElevation="8dp" android:layout_margin="6dp" > <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="0dp" android:background="@drawable/btn_bg" android:text="My button"/> </android.support.v7.widget.CardView> 

    Drawable-v21 / btn_bg.xml

     <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <item android:drawable="?attr/colorPrimary"/> </ripple> 

    Dibujable / btn_bg.xml

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/colorPrimaryDark" android:state_pressed="true"/> <item android:drawable="@color/colorPrimaryDark" android:state_focused="true"/> <item android:drawable="@color/colorPrimary"/> </selector> 

    Actividad en curso

      final CardView cardView = (CardView) findViewById(R.id.card); final Button button = (Button) findViewById(R.id.button); button.setOnTouchListener(new View.OnTouchListener() { ObjectAnimator o1 = ObjectAnimator.ofFloat(cardView, "cardElevation", 2, 8) .setDuration (80); ObjectAnimator o2 = ObjectAnimator.ofFloat(cardView, "cardElevation", 8, 2) .setDuration (80); @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: o1.start(); break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: o2.start(); break; } return false; } }); 

    Acabo de crear una biblioteca de android, que permite que usted modifique fácilmente el color del botón y el color de la ondulación

    https://github.com/xgc1986/RippleButton

     <com.xgc1986.ripplebutton.widget.RippleButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btn" android:text="Android button modified in layout" android:textColor="@android:color/white" app:buttonColor="@android:color/black" app:rippleColor="@android:color/white"/> 

    No es necesario crear un estilo para cada botón que desea con un color diferente, lo que le permite personalizar los colores al azar

    Usted puede dar a la aviación a la vista agregando el eje del z a ella y puede tener sombra del defecto a ella. Esta característica se proporcionó en L vista previa y estará disponible después de su lanzamiento. Por ahora usted puede simplemente agregar una imagen la da esta mirada para el fondo del botón

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.