2015-05-29 16 views
7

Ich habe eine TextView die als Knopf verwendet wird. Ich möchte das Attribut selectableItemBackgroundBorderless hinzufügen, um beim Drücken des Kreises einen Welleneffekt zu erhalten. Das Layout ist wie folgt:selectableItemBackgroundBorderless für Textansicht

android:id="@+id/create_button" 
android:layout_width="wrap_content" 
android:layout_height="54dp" 
... 
android:background="? android:attr/selectableItemBackgroundBorderless" 

Als Ergebnis in der Tat der Kreis sich allmählich ausbreitende Wirkung beim Drücken, aber die Welligkeit geht aus dem Textview, aber gerade aus dem Boden des Textview (weil die Oberseite des Textview ist Aktionsleiste).

Meine Frage ist, warum Ripple-Effekt über die Textansicht unten gelangt? Wie Sie wissen, habe ich android:layout_height auf 54dp begrenzt. Warum ist diese Einschränkung nutzlos?

Antwort

16

Sie müssen ?android:attr/selectableItemBackground verwenden, um den Welleneffekt innerhalb der View Grenzen zu halten.

?android:attr/selectableItemBackgroundBorderless kann der Effekt außerhalb der View gehen.

+1

Ja, aber wie Kreis Ripple-Effekt zu bekommen? Genau wie der Effekt der Aktionsbalken-Taste. – Vincent

+0

Sie sollten es haben, wenn Sie Ihre Anwendung auf Android 5.0 und höher ausführen. –

+0

Ich laufe auf Android 5.1. Aber die Rippe verlässt die Textansicht von unten. – Vincent

1

1.To die sich allmählich ausbreitende Wirkung in der Ansicht begrenzen nur müssen Sie

android:background="?attr/selectableItemBackground" 

in der Ansicht angeben.

2.Für die Schaffung von Welleneffekt Grenze weniger d. H. Zeigen Welleneffekt im gesamten Layout können Sie dies verwenden.

android:background="?attr/selectableItemBackgroundBorderless" 

3.Für mehr Sie auf den Link überprüfen Defining Custom Animation