2016-04-21 11 views
0

Ich versuche, meine Ansicht auf eine Ansicht außerhalb des Layouts der Eltern zu animieren. Wie in anderen Fragen gesagt, würde ich verwenden müssen:Animieren der Ansicht außerhalb der übergeordneten Layoutgrenzen mit einem CardView

 android:clipChildren="false" 
     android:clipToPadding="false" 

Welche funktioniert perfekt für normale Ansichten! Allerdings muss ich eine Ansicht aus einem CardView animieren. Aus irgendeinem Grund, wenn sich meine Ansicht in einer CardView befindet, wird sie nicht animiert, sondern nur an der Grenze angehalten.

Meine Layout-Datei ist sehr einfach, nur ein Linearlayout, einige Ansichten und eine cardview mit der belebenden Blick ins Innere davon:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:orientation="vertical" 
android:clipChildren="false" 
android:clipToPadding="false"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hello World!" /> 

<android.support.v7.widget.CardView 
    android:layout_width="350dp" 
    android:layout_height="200dp" 
    android:clipChildren="false" 
    android:clipToPadding="false"> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clipChildren="false" 
     android:clipToPadding="false"> 
     <View 
      android:id="@+id/animate" 
      android:layout_width="25dp" 
      android:layout_height="25dp" 
      android:background="@android:color/holo_red_light"/> 
    </LinearLayout> 
</android.support.v7.widget.CardView> 

</LinearLayout> 

Der Code, den ich für die Animation mit bin ist:

View view = findViewById(R.id.animate); 
    ObjectAnimator animation2 = ObjectAnimator.ofFloat(view, "translationY", -500); 
    animation2.setDuration(5000); 
    animation2.setTarget(view); 
    animation2.start(); 

Das Problem ist jetzt, dass wenn ich die CardView verwende, die Ansicht aufhört, an der Grenze zu animieren. Es verschwindet einfach. Wenn ich ein normales FrameLayout verwende, animiert es aus dem Elternteil.

Gibt es irgendein merkwürdiges Verhalten, das ich mit der CardView vermisse und davon animiere?

Antwort

2

Es stellt sich heraus, dass auf dem CardView

cardView.setClipToOutline(false); 

Bedarf aufgerufen werden. Dies verhindert, dass der Artikel an der Grenze verschwindet.

+1

Es ist min API 21 erforderlich, brauche ich eine Lösung für API 16 –

Verwandte Themen