如何从棒棒糖按钮中删除边框/阴影

7he*_*ing 45 android button android-5.0-lollipop

对于api <21,按钮看起来很好.但是,+ 21版本会创建此边框或阴影,如下图所示.如何在不更改孔主题的情况下摆脱它,但设置样式变量?

在此输入图像描述

在这张彩色图像上可能会更清楚.按钮周围有某种边框. 在此输入图像描述

我的buttonssstyle定义如下:

<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>
Run Code Online (Sandbox Code Playgroud)

dae*_*mie 186

Lollipop有一个令人讨厌的小功能叫做stateListAnimator处理按钮上的高程,这会导致阴影.

删除stateListAnimator以摆脱阴影.

你有多种选择:

Java的:

button.setStateListAnimator(null);
Run Code Online (Sandbox Code Playgroud)

科特林:

button.stateListAnimator = null
Run Code Online (Sandbox Code Playgroud)

或者在你的布局xml中:

<Button
...
android:stateListAnimator="@null" 
....
/> 
Run Code Online (Sandbox Code Playgroud)

  • 另一个想法是,使用Textviews而不是Buttons.他们没有这种意外的行为. (3认同)
  • 这导致某些三星设备本机崩溃.仅供参考,任何体验过它的人.很好地利用主题代替. (2认同)

Won*_*res 39

我正在使用的最好和最简单的方法是将样式属性设置为Button

<Button
...
style="?android:attr/borderlessButtonStyle"
....
/> 
Run Code Online (Sandbox Code Playgroud)

未来可能有人需要.


Oli*_*ier 9

已经有一种风格,你可以利用没有边框.

应用

style="@style/Base.Widget.AppCompat.Button.Borderless" 
Run Code Online (Sandbox Code Playgroud)

到您的项目删除边框


小智 7

android 中的按钮具有 statelistAnimator 属性,因此通过将其声明为 null 我们可以删除按钮的边框

android:stateListAnimator="@null"
Run Code Online (Sandbox Code Playgroud)


Kor*_*yem 6

我解决了这个全球通过设置android:stateListAnimator="@null"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>
Run Code Online (Sandbox Code Playgroud)

瞧,阴影已经消失了:)


Joh*_*ngh 6

棒棒糖Appcompat主题上添加了“阴影”效果

在res / values-v21 / styles.xml中添加以下行以删除默认阴影

主题级别:

<item name="android:buttonStyle">@style/Widget.AppCompat.Button.Borderless</item>
Run Code Online (Sandbox Code Playgroud)

xml布局:

android:stateListAnimator="@null"
Run Code Online (Sandbox Code Playgroud)

Java:

setStateListAnimator(null);
Run Code Online (Sandbox Code Playgroud)

科特林:

stateListAnimator = null
Run Code Online (Sandbox Code Playgroud)