如何在执行操作时移动布局或卡片视图

问题描述 投票:0回答:1

我通过改变可扩展卡片视图的可见性,在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 android-linearlayout android-cardview
1个回答
0
投票

这是因为您已将线性布局设置为

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内使用几个价值动画师

© www.soinside.com 2019 - 2024. All rights reserved.