How to remove border/shadow from lollipop buttons
The buttons looks fine for api < 21. However, the +21 versions creates this border or shadow that is shown on the image below. How do I get rid of it without changeing the hole theme, but setting a style variable?
It might be more clear on this colored image. There is some kind of border around the buttons.
My buttonssstyle is defined like this:
<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>
Solution 1:
Lollipop has a nasty little feature called stateListAnimator
which handles the elevations on Buttons, which leads to shadows.
Remove the stateListAnimator
to get rid of the shadows.
You have got multiple options to do that:
Java:
button.setStateListAnimator(null);
Kotlin:
button.stateListAnimator = null
or in your layout xml's:
<Button
...
android:stateListAnimator="@null"
....
/>
Solution 2:
Best and easiest way i am using is setting style attribute to Button
<Button
...
style="?android:attr/borderlessButtonStyle"
....
/>
may be someone need in future.
Solution 3:
There is already a style you can leverage not to have the borders.
apply
style="@style/Base.Widget.AppCompat.Button.Borderless"
to your item to remove the borders