这些按钮看起来很适合api< 21.但是,+ 21版本会创建此边框或阴影,如下图所示。如何在不改变孔主题的情况下摆脱它,但设置样式变量?
这张彩色图片可能更清晰。按钮周围有某种边框。
我的buttonssstyle定义如下:
<unknown>:0: error: Swift does not support the SDK 'MacOSX10.10.sdk'
答案 0 :(得分:169)
Lollipop有一个叫做stateListAnimator
的令人讨厌的小功能,可以处理按钮上的高程,这会导致阴影。
删除stateListAnimator
以消除阴影。
您有多种选择:
<强>爪哇:强>
button.setStateListAnimator(null);
<强>科特林:强>
button.stateListAnimator = null
或在您的布局xml中:
<Button
...
android:stateListAnimator="@null"
....
/>
答案 1 :(得分:33)
我正在使用的最佳和最简单的方法是将样式属性设置为Button
<Button
...
style="?android:attr/borderlessButtonStyle"
....
/>
可能是将来需要的人。
答案 2 :(得分:7)
你可以利用一种不带边框的风格。
申请
style="@style/Base.Widget.AppCompat.Button.Borderless"
到你的项目以删除边框
答案 3 :(得分: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>
瞧,阴影已经消失了。)
答案 4 :(得分:4)
“阴影”效果
在res / values-v21 / styles.xml中添加以下行以删除默认阴影
主题级别:
<item name="android:buttonStyle">@style/Widget.AppCompat.Button.Borderless</item>
xml布局:
android:stateListAnimator="@null"
<强>爪哇:强>
setStateListAnimator(null);
<强>科特林:强>
stateListAnimator = null
答案 5 :(得分:1)
我建议您通过将高程设置为空来完全删除阴影。由于您已经拥有XML样式(添加此样式以便普遍使用它),或者您可以将此属性添加到XML视图定义
android:elevation="0dp"
答案 6 :(得分:1)
在xml中我们可以使用
android:stateListAnimator="@null"
答案 7 :(得分:1)
<强>问题强>
在Android v21中,默认情况下为所有按钮添加了边框。
<!-- 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>
<强>解决方案强>
在我们的应用程序主题中,设置按钮样式以删除默认边框(Android支持库本身为其提供样式)。
<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>
答案 8 :(得分:1)
android中的按钮具有statelistAnimator属性,因此通过将其声明为null,我们可以删除按钮的边框
android:stateListAnimator="@null"
答案 9 :(得分:0)
如果您想在Kotlin中以编程方式执行此操作,则可以执行
button.stateListAnimator = null
答案 10 :(得分:-1)
您可以创建带有按钮颜色的xml可绘制对象,并将其设置为按钮的背景