我通过改变可扩展卡片视图的可见性,在Android工作室中创建了可扩展和可折叠的卡片视图。 (因此,如果它是可见的,它已经展开,如果不可见则折叠,每个卡片视图都有一个状态,即它是展开还是折叠。)但是当卡片视图展开时,它会在下一个卡片视图下面。有什么方法可以将折叠的卡片视图从扩展的卡片视图中推出?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dp" --> the extra 100dp for the expanded view
android:orientation="vertical"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_marginBottom="-100dp"> --> this allows the card views to be underneath each other when not expanded
....
</LinearLayout>
我的代码在卡视图的适配器中...
private void onClickButton(final CardView expandableLayout, final
LinearLayout mainlayout, final int i){
if (expandableLayout.getVisibility() == View.VISIBLE){
expandableLayout.setVisibility(View.GONE);
expandState.put(i,false);
}
else{
expandableLayout.setVisibility(View.VISIBLE);
// ideally mainlayout.
// something to change the android:layout_marginBottom="0" ?
expandState.put(i,true);
}
}
我想我需要实现一些代码来改变主布局参数,当它可见时,当它不可见时,我只是找不到要使用的代码。
这是因为您已将线性布局设置为
android:layout_height="200dp"
线性布局无法扩展超过200dp
尝试使用LinearLayout Height的'wrap_content'
更好的是计算每个高度。
当您展开视图时,它会扩展到其他视图的高度+ CardView的额外高度
使用ValueAnimator为下面的高度设置动画:
ValueAnimator anim = ValueAnimator.ofInt(YOUR_LINEAR_LAYOUT.getHeight(), getResources().getDimensionPixelSize(R.dimen.YOUR_DESIRED_HEIGHT));
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int Val = (Integer) valueAnimator.getAnimatedValue();
ViewGroup.LayoutParams param = YOUR_LINEAR_LAYOUT.getLayoutParams();
param.height = Val;
YOUR_LINEAR_LAYOUT.setLayoutParams(param);
}
});
anim.setInterpolator(YOUR_DESIRED_INTERPOLATOR);
anim.setDuration(DURATION).start();
你甚至可以在AnimatorSet
内使用几个价值动画师