Solo estaba revisando las pautas de diseño y preguntándome sobre los botones sin bordes. Busqué con los ojos abiertos y traté de encontrar la fuente, pero no puedo reunirla por mí mismo. ¿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, puede configurar el fondo en vacío, pero luego no tengo el divisor)?
Aquí enlaces a las pautas de diseño:
android
layout
button
borderless
KarlKarlsom
fuente
fuente
Respuestas:
Para aclarar alguna confusión:
Esto se hace en 2 pasos: Establecer el atributo de fondo del botón en android: attr / selectableItemBackground crea un botón con comentarios pero sin fondo.
La línea para dividir el botón sin bordes del resto de su diseño se realiza mediante una vista con el fondo android: attr / dividerVertical
Para una mejor comprensión, aquí hay un diseño para una combinación de botones sin bordes Aceptar / Cancelar en la parte inferior de la pantalla (como en la imagen de la derecha arriba).
fuente
?android:attr/selectableItemBackground
para?attr/selectableItemBackground
y?android:attr/dividerVertical
para?attr/dividerVertical
?android:attr/dividerVerticalfor
y?attr/dividerVertical
también funciona para abdominalesSimplemente agregue el siguiente atributo de estilo en su
Button
etiqueta:fuente: http://developer.android.com/guide/topics/ui/controls/button.html#Borderless
Luego, puede agregar divisores como en la respuesta de Karl .
fuente
Respuesta tardía, pero muchas opiniones. Como las API <11 aún no están muertas, para los interesados aquí hay un truco.
Deje que su recipiente tenga el color deseado (puede ser transparente). Luego, dale a tus botones un selector con color transparente predeterminado y algo de color cuando se presionan. De esa manera, tendrá un botón transparente, pero cambiará de color cuando lo presione (como el de holo). También puede agregar alguna animación (como holo's). El selector debería ser algo como esto:
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)PD [novatos]: debes definir esos colores en values / colors.xml
fuente
API Level 10
yAPI Level > 10
!Para el que quiere botones sin bordes pero aún animados cuando se hace clic. Agregue esto en el botón.
Si quisieras un divisor / línea entre ellos. Agregue esto en el diseño lineal.
Resumen
fuente
Para el estilo del material, agregue
style="@style/Widget.AppCompat.Button.Borderless"
cuando use la biblioteca AppCompat.fuente
De la fuente de la aplicación iosched se me ocurrió esta
ButtonBar
clase:Este será el lugar al
LinearLayout
que vayan los botones "Aceptar" y "Cancelar", y se encargará de ponerlos en el orden apropiado. Luego coloque esto en el diseño en el que desea los botones:Esto le da la apariencia de un diálogo con botones sin bordes. Puede encontrar estos atributos en el res en el marco.
buttonBarStyle
hace el divisor vertical y el acolchado.buttonBarButtonStyle
está configurado comoborderlessButtonStyle
para el tema Holo, pero creo que esta debería ser la forma más sólida de mostrarlo como el marco quiere mostrarlo.fuente
Mirada en el tema de los atributos
buttonBarStyle
,buttonBarButtonStyle
yborderlessButtonStyle
.fuente
buttonBarButtonStyle
, obtengo una excepciónE/AndroidRuntime(17134): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime(17134): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x1030281 a=2 r=0x1030281}
No tengo idea de por qué, pero el usoselectableItemBackground
funciona de maravilla.También puede hacer que los botones no tengan bordes a través del código:
fuente
android.R.attr.selectableItemBackground
requiere API 21. ¿Alguna idea de cómo hacer esto en versiones anteriores?Para aquellos que quieren crear un botón sin bordes mediante programación para API> = 8
fuente
Otra solución que debería funcionar tanto en plataformas Android antiguas como nuevas es usar
atributo para la vista Botón. Pero después de agregar el botón de línea anterior no proporcionará comentarios táctiles.
Para proporcionar comentarios táctiles, agregue el siguiente código a la clase de actividad
esta trabajando bien para mi.
fuente
case MotionEvent.ACTION_CANCEL:
debajo delcase MotionEvent.ACTION_UP:
.Para cualquiera que todavía esté buscando:
hereda su propio estilo para las barras de botones Holo:
o Holo Light:
y para botones Holo sin bordes:
o Holo Light:
fuente
Así es como se crea un botón sin bordes (plano) mediante programación sin usar XML
fuente
ContextThemeWrapper myContext = new ContextThemeWrapper(this.getActivity(), R.style.Widget_AppCompat_Button_Borderless_Colored); Button myButton = new Button(myContext);
y no funcionaría. Después de agregar el segundo y tercer parámetro, ¡está funcionando!Utilice el siguiente código en su archivo xml. Usa android: background = "# 00000000" para tener el color transparente.
fuente
Puede utilizar la biblioteca de compatibilidad de AppCompat para el botón sin bordes.
Puedes hacer un botón sin bordes como este:
Puede hacer un botón de color sin bordes de esta manera:
fuente
Por alguna razón, ni
style="Widget.Holo.Button.Borderless"
niandroid:background="?android:attr/selectableItemBackground"
funcionó para mí. Para ser más precisos,Widget.Holo.Button.Borderless
funcionó en Android 4.0 pero no funcionó en Android 2.3.3. Lo que me hizo el truco en ambas versiones fueandroid:background="@drawable/transparent"
y este XML en res / drawable / transparent.xml:Cabeza llana a través del enfoque de la pared.
fuente
android:background="?android:attr/dividerVertical"
truco.Una gran presentación de diapositivas sobre cómo lograr el efecto deseado de Googles Nick Butcher (comience en la diapositiva 20). Utiliza el androide estándar
@attr
para diseñar el botón y el divisor.fuente
Además de 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 padre y viceversa si su línea es vertical.
fuente
Si desea lograr lo mismo mediante programación:
(esto es C # pero fácilmente transaccional a Java)
Partido
fuente
Pruebe este código, para eliminar el elemento de diseño de fondo (@ drawable / bg) mediante programación, solo necesitamos proporcionar un valor nulo como parámetro.
fuente