2016-04-21 99 views
0

我试图将我的视图制作为父视图外部的视图。正如其他问题所述,我需要使用:使用卡片视图从父级布局边界创建动画视图

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

这对于普通视图来说是完美的!不过,我需要为CardView生成一个视图。出于某种原因,当我的视图位于CardView中时,它不会生成动画,它只会停留在边框处。

我的布局文件是非常简单的,只是一个LinearLayout中,一些看法并与里面的动画视cardview:

<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> 

我用动画的代码是:

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

现在的问题是,当我使用CardView时,视图在边框停止动画。它只是消散。当我使用正常的FrameLayout时,它会在父级之外进行动画制作。

有没有什么奇怪的行为,我错过了CardView和动画了吗?

回答

2

事实证明,在CardView

cardView.setClipToOutline(false); 

需要被调用。这确实可以防止物品在边界消失。

+1

需要min API 21,我需要API 16的解决方案 –