8

Ich versuche, den Material Design-Ripple-Effekt für Geräte mit Lollipop und höher (21+) zu erhalten und den Knopf so zu gestalten, dass er keinen großen Rand/Raum um ihn herum hat.Stilisierungsmaterial Tasten in Android v21

Beispiel 1: Tasten mit Kräuselungeffekt aber mit Rand/gap:

I like the ripple effect of this version, but not the gap in the layout

Beispiel 2: Tasten ohne Ripple-Effekt und ohne den Rand/gap:

I want the layout of this version, but with the ripple effect

Ich möchte das Layout von Exmaple 2 mit dem Welleneffekt, der in Beispiel 1 verwendet wird.

Was meine styles-v21 aussehen wie für Beispiel 1:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    ... other styles ... 

    <style name="FacebookButton" parent="android:Widget.Material.Button"> 
     <item name="android:colorButtonNormal">#ff3b5998</item> 
     <item name="android:layout_margin">0dp</item> 
     <item name="android:borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless</item> 


    </style> 
    <style name="GoogleButton" parent="android:Widget.Material.Button"> 
     <item name="android:colorButtonNormal">#ffdd4b39</item> 
     <item name="android:layout_margin">0dp</item> 
     <item name="android:borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless</item> 


    </style> 
    <style name="TwitterButton" parent="android:Widget.Material.Button"> 
     <item name="android:colorButtonNormal">#ff55acee</item> 
     <item name="android:layout_margin">0dp</item> 
     <item name="android:borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless</item> 


    </style> 
    <style name="SkipButton" parent="android:Widget.Material.Button"> 
     <item name="android:colorButtonNormal">#ffdfa800</item> 
     <item name="android:layout_margin">0dp</item> 
     <item name="android:borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless</item> 

    </style> 

</resources> 

Was Layout meiner Schaltfläche sieht aus wie für Beispiel 1:

<Button 
    android:id="@+id/login_with_facebook" 
    android:text="@string/login_with_facebook" 
    android:fontFamily="sans-serif-condensed" 
    android:textSize="16sp" 
    android:drawableLeft="@drawable/facebook_icon" 
    android:drawablePadding="25dp" 
    android:layout_width="match_parent" 
    android:layout_height="45dp" 
    android:layout_weight="16.88" 
    android:textColor="#ffffff" 
    android:gravity="left|center_vertical" 
    android:paddingLeft="45dp" 
    android:theme="@style/FacebookButton" /> 

<Button 
    android:id="@+id/login_with_google" 
    android:text="@string/login_with_google" 
    android:fontFamily="sans-serif-condensed" 
    android:textSize="16sp" 
    android:drawableLeft="@drawable/google_icon" 
    android:drawablePadding="25dp" 
    android:layout_width="match_parent" 
    android:layout_height="45dp" 
    android:layout_weight="16.88" 
    android:textColor="#ffffffff" 
    android:gravity="left|center_vertical" 
    android:paddingLeft="45dp" 
    android:theme="@style/GoogleButton" /> 

<Button 
    android:id="@+id/twitter_login_button" 
    android:text="@string/login_with_twitter" 
    android:fontFamily="sans-serif-condensed" 
    android:textSize="16sp" 
    android:drawableLeft="@drawable/twitter_icon" 
    android:drawablePadding="25dp" 
    android:layout_height="45dp" 
    android:gravity="left|center_vertical" 
    android:layout_width="match_parent" 
    android:layout_weight="16.88" 
    android:textColor="#ffffffff" 
    android:paddingLeft="45dp" 
    android:theme="@style/TwitterButton" /> 

<Button 
    android:id="@+id/login_anonymously" 
    android:text="@string/login_anonymously" 
    android:fontFamily="sans-serif-condensed" 
    android:textSize="16sp" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="50" 
    android:textColor="#ffffffff" 
    android:theme="@style/SkipButton" /> 

Irgendeine Idee, wie ich das Aussehen erreichen kann Beispiel 2 mit der von mir vorgestellten Ripple-Methode? Irgendwelche Links zu Ressourcen oder Hilfe würden geschätzt. Vielen Dank.

Extra:
Ich habe schon gelesen über die folgende

+1

Haben Sie versucht, 'android: Hintergrund = "android: attr/selectableItemBackground"'? – alanv

+0

@alanv das hat perfekt funktioniert, danke! Ich frage mich nur, woher weißt du das zu benutzen? Die Dokumente scheinen unter diesen Umständen nicht viel zu helfen. Wenn Sie Ihren Kommentar als Antwort posten, werde ich weitermachen und abstimmen. Danke noch einmal. – markbratanov

+5

Ich bin der Android Framework Engineer, der die Material Styles geschrieben hat. ;) – alanv

Antwort

6

Sie android:background="?android:attr/selectableItemBackground" können einen rechteckigen Welligkeit zu erhalten.

Alternativ können Sie Ihr eigenes Zeichenprogramm erstellen. Hier ist der XML-Code für das auswählbare Element Hintergrund der Rahmen:

ziehbar/item_background_material.xml:

<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
     android:color="?android:attr/colorControlHighlight"> 
    <item android:id="@android:id/mask"> 
     <color android:color="@android:color/white" /> 
    </item> 
</ripple> 
+1

Vielen Dank! Der erste grenzenlose Stil, der für mich funktioniert hat! XD –