2015-06-23 75 views
31

按鈕對於api來說看起來很不錯< 21.但是,+21版本會創建此邊框或陰影,如下圖所示。如何在不改變洞主題的情況下襬脫它,但是設置一個樣式變量?如何從棒棒糖按鈕中刪除邊框/陰影

enter image description here

這可能是這個彩色圖像更加清晰。按鈕周圍有一些邊框。 enter image description here

我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> 
+0

嘗試將android:elevation =「0dp」設置爲您的主佈局。 – user765

回答

123

棒棒堂有一個名爲stateListAnimator一個討厭的小功能,處理上的按鈕的高度,這導致陰影。

刪除stateListAnimator以消除陰影。

你有多種選擇來做到這一點:

在代碼:

button.setStateListAnimator(null); 

或在佈局XML的:我

<Button 
... 
android:stateListAnimator="@null" 
.... 
/> 
+1

另一個想法是,使用Textviews而不是按鈕。他們沒有這種意外的行爲。 – FlanschiFox

+0

謝謝。這解決了這個問題。 – Sulby

+0

如果工作,請將答案標記爲「已接受」。我很高興我可以幫你;) – FlanschiFox

3

我建議你只是刪除陰影完全由海拔設置不了了之。既然你已經有了一個XML風格(內容添加到普遍使用),或者你可以將此屬性添加到您的XML視圖定義

android:elevation="0dp" 
+3

我試圖設置高程但它不能解決問題。 – Sulby

+0

你究竟想要刪除什麼?海拔將刪除陰影(我想我不清楚) – Booger

+0

我剛剛添加了第二個圖像,可能會使它更清晰,我想刪除它。按鈕周圍有一些邊框/陰影。 – Sulby

26

最佳和最簡單的方法使用的是設置樣式屬性按鈕

<Button 
... 
style="?android:attr/borderlessButtonStyle" 
.... 
/> 

未來可能會有人需要。

5

已經有一種風格,你可以利用沒有邊界。

申請

style="@style/Base.Widget.AppCompat.Button.Borderless" 

到您的項目設置android:stateListAnimator="@null"Resources\values\styles.xml去除邊框

3

我全球解決了這個問題

<?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> 

,瞧陰影已經一去不復返了:)

0

在XML中,我們可以使用

android:stateListAnimator="@null" 
0

問題

  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> 
    
    • 屬性 「stateListAnimator」 是這是造成問題的一個。

解決方案

  1. 在我們的應用主題,設置按鈕樣式刪除默認的邊框(支持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> 
    
1

「陰影」 效應上棒棒糖程序兼容性主題加入

添加以下行在res /值-V21/styles.xml刪除默認陰影

主題等級:

<item name="android:buttonStyle">@style/Widget.AppCompat.Button.Borderless</item> 

XML佈局:

android:stateListAnimator="@null" 

編程方式:

setStateListAnimator(null); 
0

按鈕,機器人有statelistAnimator屬性,因此,宣佈其無效,我們可以刪除按鈕的邊框

android:stateListAnimator="@null"