2014-10-20 30 views
1

我正在测试我的Android API21上的应用程序!不幸的是,我的按钮看起来很奇怪 - 添加了某种背景色。背景图像没有改变 - 除了边框外,它们是完全透明的。 (不同的文本和大小是由于截图)。Android API 21更改我的自定义按钮背景

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

我已经尝试过机器人:海拔= “0dp” 和android:背景= “@安卓:彩色/透明”。任何人都知道我的按钮为什么改变?非常感谢你!

layout.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"/> 

style.xml:

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

回答

3

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

这里是什么样子的按钮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> 
+0

非常感谢!但是,父母的更改确实给我带来了一些问题,也许是因为我也有一些自定义按钮视图 - 要排除这种情况。万分感谢! – ChrisX 2014-10-25 12:09:56

+0

谢谢! android:stateListAnimator =“@ null”为我做了诡计。 – Wops 2015-05-10 14:55:27