2015-04-30 42 views
0

我遇到了幾個小時都無法解決的嚴重問題。 我有一個主機活動,在它下面有一個用於片段的relativeLayout頭和frameLayout。 [RelativeLayout] [FrameLayout價值動畫師動畫後調整框架佈局

]。 我需要隱藏鍵盤出現時的相對佈局,並在隱藏動畫時顯示它。 我解決了這個問題以這種方式:

ValueAnimator animator = ValueAnimator.ofFloat(1.0f, 0.0f); 
    animator.setDuration(250); 
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator valueAnimator) { 
    int offset = (int) (mHeaderLayout.getHeight()); 
    float value = (Float) valueAnimator.getAnimatedValue(); 
    LinearLayout.LayoutParams headerParams = (LinearLayout.LayoutParams) mHeaderLayout 
    .getLayoutParams(); 
    LinearLayout.LayoutParams fragmentParams = (LinearLayout.LayoutParams) mFragmentLayout 
    .getLayoutParams(); 
headerParams.setMargins(0, (int) (-1 * value * offset), 0, 
    (int) (value * offset)); 
    fragmentParams.setMargins(0, (int) (-1 * value * offset), 0, 
    (int) (value * offset)); 
    mHeaderLayout.setLayoutParams(headerParams); 
    mFragmentLayout.setLayoutParams(fragmentParams); 
    } 
    }); 

animator.start();

但是我遇到了這個問題,當鍵盤出現時,由於移動佈局,我需要填充額外的空間(RelativeLayout的高度)。

回答

1

動畫完成後,將標題的可見性設置爲GONE並將FrameLayout高度設置爲fill_parent。這將自動使FrameLayout佔據整個空間。

+0

它已經匹配父項。 – Barterio

+0

如果我使用animatorListener做到這一點,並使用mFrafmentLayout.getLayoutParams.height = linearLayout.LayoutParams.MatchParent;什麼都沒發生:( – Barterio