¿Cómo crear botones estándar sin bordes (como en la guía de diseño mencionada)?

Estaba comprobando las pautas de diseño y preguntándome sobre los botones sin bordes. Eché un vistazo y traté de encontrarlo en la fuente, pero no puedo reunirlo solo. ¿Es este el widget de Botón normal pero agrega un estilo personalizado (predeterminado de Android)? ¿Cómo hacer estos botones sin bordes (por supuesto, puedes configurar el fondo para que esté vacío, pero no tengo el divisor)?

Aquí enlaces a las pautas de diseño:

  • http://developer.android.com/design/building-blocks/buttons.html
  • http://developer.android.com/guide/topics/ui/controls/button.html#Borderless

enter image description here

Para despejar la confusión:

Esto se hace en 2 pasos: configurar el atributo de fondo del botón en android: attr / seleccionableItemBackground crea un botón con comentarios pero sin fondo.

android:background="?android:attr/selectableItemBackground" 

La línea para dividir el botón sin bordes del rest de su diseño se realiza mediante una vista con el fondo android: attr / dividerVertical

 android:background="?android:attr/dividerVertical" 

Para una mejor comprensión aquí hay un diseño para una combinación de botones OK / CANCELAR sin márgenes en la parte inferior de la pantalla (como en la imagen de la derecha de arriba).

       

Simplemente agregue el siguiente atributo de estilo en su etiqueta de Button :

  style="?android:attr/borderlessButtonStyle" 

fuente: http://developer.android.com/guide/topics/ui/controls/button.html#Borderless

Luego puedes agregar divisores como en la respuesta de Karl .

Respuesta tardía, pero muchas vistas. Como las API <11 aún no están muertas, para los interesados ​​aquí hay un truco.

Deje que su contenedor tenga el color deseado (puede ser transparente). Luego, dele a sus botones un selector con color transparente predeterminado y un poco de color cuando lo presione. De esta forma, tendrá un botón transparente, pero cambiará de color cuando se presione (como holo). También puede agregar algunas animaciones (como holo). El selector debería ser algo como esto:

 res/drawable/selector_transparent_button.xml      

Y el botón debería tener android:background="@drawable/selector_transparent_button"

PD: deja que tu contenedor tenga los divisores ( android:divider='@android:drawable/... para API <11)

PS [Newbies]: debe definir esos colores en values ​​/ colors.xml

Para el que quiere botones sin bordes pero aún animado cuando hace clic. Agregue esto en el botón.

 style="?android:attr/borderlessButtonStyle" 

Si quería un divisor / línea entre ellos. Agregue esto en el diseño lineal.

 style="?android:buttonBarStyle" 

Resumen

     

Para estilo de material, agregue style="@style/Widget.AppCompat.Button.Borderless" cuando use la biblioteca de AppCompat.

Desde la fuente de la aplicación iosched , surgió esta clase ButtonBar :

 /** * An extremely simple {@link LinearLayout} descendant that simply reverses the * order of its child views on Android 4.0+. The reason for this is that on * Android 4.0+, negative buttons should be shown to the left of positive buttons. */ public class ButtonBar extends LinearLayout { public ButtonBar(Context context) { super(context); } public ButtonBar(Context context, AttributeSet attributes) { super(context, attributes); } public ButtonBar(Context context, AttributeSet attributes, int def_style) { super(context, attributes, def_style); } @Override public View getChildAt(int index) { if (_has_ics) // Flip the buttons so that "OK | Cancel" becomes "Cancel | OK" on ICS return super.getChildAt(getChildCount() - 1 - index); return super.getChildAt(index); } private final static boolean _has_ics = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH; } 

Este será el LinearLayout que LinearLayout los LinearLayout “Aceptar” y “Cancelar”, y se encargará de ponerlos en el orden apropiado. Luego, coloque esto en el diseño en el que desea que estén los botones:

        

Esto le da la apariencia del diálogo con botones sin bordes. Puede encontrar estos atributos en res en el marco. buttonBarStyle hace el divisor vertical y el relleno. buttonBarButtonStyle se establece como buttonBarButtonStyle para el tema Holo, pero creo que esta debería ser la forma más robusta de mostrarlo, ya que el framework desea mostrarlo.

Mire en los atributos del tema buttonBarStyle , buttonBarButtonStyle , y buttonBarButtonStyle .

También puede hacer botones sin bordes a través del código:

 TypedValue value= new TypedValue(); getApplicationContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, value, true); myButton.setBackgroundResource(value.resourceId); 

Para aquellos que quieren crear botones sin bordes programáticamente para API> = 8

 ImageButton smsImgBtn = new ImageButton(this); //Sets a drawable as the content of this button smsImgBtn.setImageResource(R.drawable.message_icon); //Set to 0 to remove the background or for bordeless button smsImgBtn.setBackgroundResource(0); 

Otra solución que debería funcionar tanto en la plataforma android más vieja y más nueva es usar

 android:background="@android:color/transparent" 

atributo para la vista de botones. Pero después de agregar el botón de la línea anterior no proporcionará comentarios táctiles.

Para proporcionar comentarios táctiles, agregue el siguiente código a la clase de Actividad

 button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: ((Button)view).setBackgroundColor(Color.LTGRAY); break; case MotionEvent.ACTION_UP: ((Button)view).setBackgroundColor(Color.TRANSPARENT); } return false; } }); 

esta trabajando bien para mi.

Para cualquiera que todavía esté buscando:

hereda tu propio estilo para las barras de botones Holo:

  

o Holo Light:

  

y para botones Holo sin bordes:

  

o Holo Light:

  

Use el siguiente código en su archivo xml. Use android: background = “# 00000000” para tener el color transparente.

  

Puede usar la Biblioteca de soporte de AppCompat para el botón sin bordes.

Puedes hacer un botón sin bordes como este:

  

Puede hacer que el Botón de color sin bordes sea así:

  

Así es como se crea un botón sin bordes (plano) mediante progtwigción sin usar XML

 ContextThemeWrapper myContext = new ContextThemeWrapper(this.getActivity(), R.style.Widget_AppCompat_Button_Borderless_Colored); Button myButton = new Button(myContext, null, R.style.Widget_AppCompat_Button_Borderless_Colored); 

Por alguna razón, ni style="Widget.Holo.Button.Borderless" ni android:background="?android:attr/selectableItemBackground" funcionó para mí. Para ser más preciso, Widget.Holo.Button.Borderless hizo el trabajo en Android 4.0 pero no funcionó en Android 2.3.3. Lo que hizo el truco para mí en ambas versiones fue android:background="@drawable/transparent" y este XML en res / drawable / transparent.xml:

   

Plain cabeza a través del enfoque de la pared.

Una gran presentación de diapositivas sobre cómo lograr el efecto deseado de Googles Nick Butcher (comience en la diapositiva 20). Él usa el estándar @attr para @attr el botón y el divisor.

Agregando a la respuesta superior también puede usar vistas con un color de fondo gris oscuro en un diseño lineal como ese.

       

Si su línea es horizontal, querrá establecer la altura en 1 punto y el ancho para que coincida con el elemento primario y viceversa si la línea es vertical.

Si quieres lograr lo mismo programáticamente:

(esto es C # pero fácilmente transatable a Java)

 Button button = new Button(new ContextThemeWrapper(Context, Resource.Style.Widget_AppCompat_Button_Borderless_Colored), null, Resource.Style.Widget_AppCompat_Button_Borderless_Colored); 

Partido

   
 Button btn= new Button(this); btn.setText("HI"); btn.setBackground(null);