2014-10-20 59 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