2017-06-06 11 views
1

Ich bin neu in der Android-Entwicklung und versuche, den Liftview-Effekt auf cardview click zu erhöhen. Ich fand mehrere Tutorials zu diesem Thema this one, this one und this answer on stackoverflow. Alle diese Übungen vorschlagen XML-Datei wie dieseCardView Lift auf Knopfdruck

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="true" android:state_pressed="true"> 
     <set> 
      <objectAnimator android:duration="@android:integer/config_shortAnimTime" 
       android:propertyName="translationZ" 
       android:valueTo="6dp" 
       android:valueType="floatType" /> 
     </set> 
    </item> 
    <item> 
     <set> 
      <objectAnimator android:duration="@android:integer/config_shortAnimTime" 
       android:propertyName="translationZ" 
       android:valueTo="0" 
       android:valueType="floatType" /> 
     </set> 
    </item> 
</selector> 

und dann in res/anim Verzeichnis abgelegt zu erstellen. Wenn ich jedoch versuche, diesen Code in res/anim/lift_on_touch.xml zu setzen, bekomme ich den Fehler "Elementselektor muss deklariert sein" und schlägt vor, diese Datei entweder in den Animator oder in ein zeichnbares Verzeichnis zu verschieben. Ich habe es in das Verzeichnis animator-v21 verschoben, und es gibt keinen Fehler, aber es funktioniert nicht. Was soll ich in diesem Fall tun?

PS: Ich habe klickbare und StateListAnimator-Attribut zu meinem CardView. Das ist mein CardView:

<android.support.v7.widget.CardView 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    app:cardElevation="2dp" 
    android:clickable="true" 
    android:stateListAnimator="@animator/lift_on_touch" 
    app:layout_constraintTop_toTopOf="@+id/top_guideline" 
    app:layout_constraintRight_toRightOf="@+id/right_guideline" 
    app:layout_constraintLeft_toLeftOf="@+id/left_guideline" 
    app:layout_constraintBottom_toBottomOf="@+id/inner_top_guideline" /> 
+0

Dies ist eine ziemlich einfache Lösung sein sollte: Kopieren Sie Ihre xml 'res/Animator Verzeichnis NICHT res/anim, kompilieren und erneut ausführen –

+0

@ inner_class7 Ich versuchte dies, immer noch kein Ergebnis –

+0

Entfernen Sie Ihre internen '' Tags, die um das Objekt sindAnimator auch –

Antwort

1

versuchen

<set> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="true" android:state_pressed="true"> 
     <set> 
      <objectAnimator android:duration="@android:integer/config_shortAnimTime" 
       android:propertyName="translationZ" 
       android:valueTo="6dp" 
       android:valueType="floatType" /> 
     </set> 
    </item> 
    <item> 
     <set> 
      <objectAnimator android:duration="@android:integer/config_shortAnimTime" 
       android:propertyName="translationZ" 
       android:valueTo="0" 
       android:valueType="floatType" /> 
     </set> 
    </item> 
</selector> 
**</set>** 

Es ist für mich auf diese Weise gearbeitet Hinzufügen <set> Tag um ihn herum

+1

Während dieses Code-Snippet das Problem lösen kann, tut es nicht t exp warum oder wie es die Frage beantwortet. Bitte fügen Sie eine Erklärung für Ihren Code bei, da dies wirklich dazu beiträgt, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen –