このアプローチが最善である場合、私は知りませんが、私は次のような問題があります。設定CardView標高プログラムで
私はそれがボタンだがクリックされた時にアニメーション化するRecyclerViewにリスト項目(CardViewを)したいです、このボタン、このアイテム内のいくつかの他のビュー、およびCardViewの背景が変更されます。
私はカスタムRecyclerView.ItemAnimatorからanimateChangeをキャッチしています:あなたが見ることができるように (今までのアニメーションがanimateLayoutChangesを経由して、XMLで定義されているだけでフェードです)
public boolean animateChange(@NonNull RecyclerView.ViewHolder oldHolder, @NonNull RecyclerView.ViewHolder newHolder, @NonNull ItemHolderInfo preLayoutInfo, @NonNull ItemHolderInfo postLayoutInfo) {
Log.d("Animation", "Test");
final MyAdapter.MyViewHolder viewHolder = (MyAdapter.MyViewHolder) newHolder;
viewHolder.mButtons.setVisibility(View.GONE);
viewHolder.mHints.setVisibility(View.GONE);
viewHolder.mImageView.setVisibility(View.GONE);
ViewGroup.LayoutParams layoutParams = viewHolder.containerCardView.getLayoutParams();
layoutParams.height = 192;
viewHolder.containerCardView.setLayoutParams(layoutParams);
viewHolder.containerCardView.setBackgroundResource(R.drawable.some_background);
viewHolder.containerCardView.setElevation(20f);
return true;
}
、私は背景を設定しています手動でanimateChangeを実行します。 CardViewの標高を除いて、すべてうまく動作します(または少なくとも予想どおり)。標高を手で設定しようとしましたが、標高は表示されていません。
EDIT______
私のCardViewはImageViewのと、それ内部のボタンがあります。ボタンを押すと、ボタン自体と画像が消えて、カードビューの右側に赤い線が表示されます。私はこれまで(setBackgroundResource付き)背景を設定することにより、それを達成しようとした:
右側の赤い線とだけのxml描画可能である<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:centerColor="@android:color/transparent"
android:centerX="0.1"
android:startColor="@android:color/holo_red_dark"/>
<corners
android:bottomLeftRadius="2dip"
android:bottomRightRadius="2dip"
android:topLeftRadius="2dip"
android:topRightRadius="2dip"/>
</shape>
</item>
<item android:right="4dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/white" />
</shape>
</item>
</layer-list>
。私の目標に近づく別の方法の提案はありますか?
「手で標高を設定しようとしましたが、標高が表示されていません」とはどういう意味ですか? –
viewHolder.containerCardView.setElevation(20f);カードビューの前に仰角がありますが、新しい背景を設定した後ではありません。だから私はこのコード行でもう一度設定しようとしました。 – Vancore
XMLで設定するのはなぜですか? –