pantalla - quitar boton flotante android
Cómo eliminar borde/sombra de los botones de lollipop (10)
El efecto "sombra" se agrega en el tema de Lollipop Appcompat
agregue la siguiente línea en res / values-v21 / styles.xml para eliminar la sombra predeterminada
Nivel de tema:
<item name="android:buttonStyle">@style/Widget.AppCompat.Button.Borderless</item>
diseño xml:
android:stateListAnimator="@null"
Programaticamente:
setStateListAnimator(null);
Los botones se ven bien para api <21. Sin embargo, las versiones +21 crean este borde o sombra que se muestra en la imagen a continuación. ¿Cómo me deshago de él sin cambiar el tema del hoyo, sino estableciendo una variable de estilo?
Puede ser más claro en esta imagen coloreada. Hay algún tipo de borde alrededor de los botones.
Mi buttonssstyle se define así:
<style name="buttonTransparent" parent="Base.TextAppearance.AppCompat.Button">
<item name="android:background">#00000000</item>
<item name="android:textColor">@drawable/button_text_blue</item>
<item name="android:textSize">18dp</item>
<item name="android:textAllCaps">false</item>
<item name="android:minHeight">45dp</item>
</style>
<style name="buttonLargeWhite" parent="buttonTransparent">
<item name="android:background">#FFF</item>
<item name="android:layout_marginTop">10dp</item>
</style>
La forma mejor y más fácil que estoy usando es establecer el atributo de estilo en el botón
<Button
...
style="?android:attr/borderlessButtonStyle"
....
/>
puede ser alguien que necesita en el futuro.
Lo solucioné globalmente al configurar android:stateListAnimator="@null"
en Resources/values/styles.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="AppTheme" parent="AppTheme.Base">
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:buttonStyle">@style/NoShadowButton</item>
</style>
<style name="NoShadowButton" parent="android:style/Widget.Button">
<item name="android:stateListAnimator">@null</item>
</style>
</resources>
Y voila las sombras se han ido para siempre :)
Lollipop tiene una pequeña característica desagradable llamada stateListAnimator
que maneja las elevaciones en los botones, lo que conduce a sombras.
Elimine stateListAnimator
para eliminar las sombras.
Tienes múltiples opciones para hacer eso:
Java:
button.setStateListAnimator(null);
Kotlin:
button.stateListAnimator = null
o en su diseño xml''s:
<Button
...
android:stateListAnimator="@null"
....
/>
Los botones en Android tienen propiedad statelistAnimator por lo que al declararlo nulo podemos eliminar el borde del botón
android:stateListAnimator="@null"
Si quieres hacer esto programáticamente en Kotlin, puedes hacer
button.stateListAnimator = null
Sugeriría que simplemente elimines la sombra por completo, al establecer la elevación en nada. Como ya tiene un estilo XML (agréguelo para usarlo universalmente), o puede agregar este atributo a su definición de vista XML
android:elevation="0dp"
Ya hay un estilo que puede aprovechar para no tener los bordes.
aplicar
style="@style/Base.Widget.AppCompat.Button.Borderless"
a su artículo para eliminar las fronteras
en xml podemos usar
android:stateListAnimator="@null"
Problema
Desde Android v21, Border ha sido agregado por defecto para todo el botón.
<!-- Bordered ink button --> <style name="Widget.Material.Button"> <item name="background">@drawable/btn_default_material</item> <item name="textAppearance">?attr/textAppearanceButton</item> <item name="minHeight">48dip</item> <item name="minWidth">88dip</item> <item name="stateListAnimator">@anim/button_state_list_anim_material</item> <item name="focusable">true</item> <item name="clickable">true</item> <item name="gravity">center_vertical|center_horizontal</item> </style>
- La propiedad " stateListAnimator " es la que está causando el problema.
Solución
En el tema de nuestra aplicación, configure el estilo del botón para eliminar el borde predeterminado (la biblioteca de soporte de Android proporciona estilo para él).
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- From Android-v21 - Border has been added by default, hence we are removing it. --> <item name="android:buttonStyle">@style/Widget.AppCompat.Button.Borderless</item> </style>