2017-05-26 7 views
0

私は自分のアプリでrecyclerviewを持っていて、各行にボタンの下の同じセルにテキストを表示するボタンが含まれています。私はテキストを完全に表示されるまで行の高さを増加させる滑らかなアニメーションでテキストを表示するためにChangeBoundsトランジションを使用しました。ボタンをクリックすると、私はこうします:ChangeBounds Androidの移行

TransitionManager.beginDelayedTransition(row, transition) 
holder.hiddenText.setVisibility(View.VISIBLE) 

問題はありますが、問題はありません。隠されたテキストは、期待どおりに高さを増やすアニメーションと共に表示されます。しかし、行の高さはアニメートされず、アニメーションなしで元の高さから最終の高さにジャンプします。

テキストと同時に高さを変更する方法はありますか?

+1

'row'でもアニメーションを有効にしたい場合は、' row'の1つ上の層で 'beginDelayedTransition()'を実行する必要があります。実際の 'RecyclerView'です。 – azizbekian

+0

@azizbekianありがとう、私の問題を解決! –

+0

@VictorManuelPinedaMurcia最終的なコードを教えてください。私は同じ問題があります。 – Mahesh

答えて

1

を解決したいと考えています。

0

は、あなたの行のレイアウト

public static void expand(final View v) { 
    v.measure(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
    final int targetHeight = v.getMeasuredHeight(); 

    // Older versions of android (pre API 21) cancel animations for views with a height of 0. 
    v.getLayoutParams().height = 1; 
    v.setVisibility(View.VISIBLE); 
    Animation a = new Animation() 
    { 
     @Override 
     protected void applyTransformation(float interpolatedTime, Transformation t) { 
      v.getLayoutParams().height = interpolatedTime == 1 
        ? LayoutParams.WRAP_CONTENT 
        : (int)(targetHeight * interpolatedTime); 
      v.requestLayout(); 
     } 

     @Override 
     public boolean willChangeBounds() { 
      return true; 
     } 
    }; 

    // 1dp/ms 
    a.setDuration((int)(targetHeight/v.getContext().getResources().getDisplayMetrics().density)); 
    v.startAnimation(a); 
} 

リニアまたは行のアニメーションと拡大するの相対的なレイアウトでこれを試してみてください。その後、あなたはあなたのケースで多分実際RecyclerViewあるrowの高い一つの層、上beginDelayedTransition()を実行する必要がある、あなたはアニメーションもrowのために有効にする場合、これはあなたの問題