2016-12-15 3 views
0

Okay, so dass ich verstanden Ripple-Effekt ist nur verfügbar LOLLIPOP und oben. Aber, noch, beim Einrichten meines ImageButton, bekomme ich keinen schönen Ripple-Effekt, der wie eine "normale" Taste funktionieren würde, nur ein Bild anzeigen (und transparent bg) ...Android Imagebutton Kräuseleffekt

Ich habe AppCompat v7 und hinzugefügt legte das zweite Layout in meinem ziehbar/Layout-v21-Ordner, der die folgende Schaltfläche in sich hat:

<ImageButton 
    android:id="@+id/forward" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:width="15dp" 
    android:scaleType="fitCenter" 
    android:height="15dp" 
    android:padding="25dp" 
    style="@style/Widget.AppCompat.ImageButton" 
    android:src="@drawable/forwardplay" /> 

Aber der Hintergrund ist grau und die Welligkeit (grau zu) kann nicht angepasst werden.

Also, wenn ich nur eine schöne Ripple Drawable in meinem Drawable-V21 ziehen würde, wäre das toll, und ich könnte es von der Hintergrundeigenschaft des ImageButton verweisen. Die Sache ist, ich kann nicht den ursprünglichen androiden Ripple-Effekt finden (Ich habe ein Samsung S6 Telefon, ist es Samsungs Thema?)

Würde mich freuen, wenn jemand ihre Arbeit teilen könnte.

Danke!

+0

Probieren Sie dieses aus: 'android: background ="? Attr/selectableItemBackgroundBorderless "' –

+0

Nein, das stürzt die App ab. kompilieren für SDK 23 (habe v25 schon - versucht beide ...) – rubmz

Antwort

0

Try

android:background="?selectableItemBackground" 
+0

Nein, das sieht irgendwie schlecht aus mit grauem Hintergrund. – rubmz

0

Sie verwenden können ziehbar und setzte Hintergrund zu Ihrer Taste.

<?xml version="1.0" encoding="utf-8"?> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@color/grey_15"> 
    <item android:id="@android:id/mask"> 
     <shape android:shape="oval"> 
      <solid android:color="?android:colorPrimary"/> 
     </shape> 
     <color android:color="@color/white"/> 
    </item> 
</ripple> 

Ändern Sie die Farbe Ihrer Spezifikation.

+0

Nein. Versucht, dass es wie ein kleiner Punkt aussieht, der nicht wächst. – rubmz

0

Nach dem Versuch, die folgenden answer:

<?xml version="1.0" encoding="utf-8"?> 
<ripple android:color="#ffffff" 
     xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@android:id/mask" 
      android:drawable="@android:color/white" /> 
</ripple> 

ich ein Stück des Geistes gefunden habe :) Funktioniert wie ein Zauber!

Fassen wir zusammen:

  1. setzen Ihr Layout in das Layout-v21 neueren Gerät zu unterstützen (und eine Kopie zu halten für ältere Geräte in der regulären ziehbar/Layout-Ordner
  2. erstellen ziehbar-v21-Ordner und. setzen sie den Text oben in einer Datei namens ripple.xml
  3. Set als Hintergrund wie so:

    <ImageButton 
        android:id="@+id/forward" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:width="15dp" 
        android:scaleType="fitCenter" 
        android:height="15dp" 
        android:padding="25dp" 
        android:background="@drawable/ripple_bg" 
        android:src="@drawable/forwardplay" /> 
    
0

... ist es Samsungs Thema?

Es könnte sehr gut sein, aber auf jeden Fall habe ich die folgenden Methoden verwendet, um diesen Effekt zu erzielen.

Es hängt von dem Aussehen ab, das Sie anstreben. Wenn Sie ein Symbol ähnlich wie etwas verwenden Sie in der Aktionsleiste sehen würden, könnten Sie verwenden möchten die actionButtonStyle:

style="?attr/actionButtonStyle" 

Es gibt auch ein paar andere Schaltfläche Stil sind attribtes Sie davon können wählen kann oder auch nicht einen Welleneffekt enthalten.

Andernfalls, wenn Sie ein aktuelles Bild als Schaltfläche verwenden, könnten Sie die selectableItemBackground oder selectableItemBackgroundBorderless Attribut als Vordergrund verwenden:

android:foreground="?attr/selectableItemBackground" 
3

diese versuchen, auf jeden Fall sollte es funktionieren:

<ImageButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@android:drawable/YOUR_BUTTON_SOURCE" 
    android:background="?attr/selectableItemBackgroundBorderless" 
/>