Android API 21 更改了我的自定义按钮背景

标签 android xml material-design

我正在 Android 上针对 API21 测试我的应用!不幸的是,我的按钮看起来很奇怪——添加了某种背景颜色。背景图像没有改变 - 除了边框外它们是完全透明的。 (不同的文字和大小是由于屏幕截图)。

在这里您可以看到 API 21 之前和之后的按钮:http://imgur.com/9EEcl0o,yVEnJkI#0

我已经尝试过 android:elevation="0dp"和 android:background="@android:color/transparent"。有人知道为什么我的按钮会改变吗?非常感谢!

布局.xml:

<Button android:id="@+id/sm_achievements_btn"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1.1"   
    android:background="@drawable/menu_btn_selector"
    android:onClick="showAchievements"
    android:text="@string/sm_achievements_btn"
    android:padding="@dimen/padding_std"
    android:layout_marginTop="@dimen/margin_small"
    android:textColor="@color/button_text"
    android:textSize="@dimen/text_xlarge"
    style="@style/lbm_button"/>

menu_btn_selector.xml:

<item android:drawable="@drawable/menu_button"
 android:state_pressed="false"/>

样式.xml:

<style name="lbm_button" parent="android:Theme.Holo.Light">
    <item name="android:textAllCaps">false</item>
</style>

最佳答案

Material 按钮有一个默认的 stateListAnimator,它提供基于状态的高度(例如,禁用时为 0dp,启用时为 1dp)。您可以通过在样式中或直接在按钮上设置 android:stateListAnimator="@null"来清除它。

这是按钮 XML 中的内容:

<Button android:id="@+id/sm_achievements_btn"
    ...
    android:textAllCaps="false"
    android:stateListAnimator="@null" />

此外,您为按钮样式使用了错误的父项。您永远不应该将主题设置为小部件样式的父主题。无论如何,如果您更喜欢这条路线,这应该是这样的:

<Button android:id="@+id/sm_achievements_btn"
    ...
    style="@style/MyButtonStyle" />

<style name="MyButtonStyle" parent="android:Widget.Material.Light.Button">
    <item name="android:textAllCaps">false</item>
    <item name="android:stateListAnimator">@null</item>
</style>

关于Android API 21 更改了我的自定义按钮背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473244/

相关文章:

android - 当我单击 android 上的主页按钮时,我希望它保存框架 AS3

android - Activity 布局 : Fragment class: vs android:name attributes

jquery - 如何使用用户上传的XML文件?

javascript - Material Design 设备兼容 DIV 幻灯片 (JS/JQuery/CSS)

angular - 覆盖 Angular Material 主体排版

javascript - PhoneGap - exec() 调用未知插件

java - 在不重启 Android Studio 的情况下重启 Gradle

android - 抽屉没有覆盖操作栏

java - Xml 解析获取标签之间的数据以及父信息

java - 如何在xsl中显示Java的String类型数组?