我在父布局上有两个视图,分别是顶部和底部屏幕,底部屏幕具有固定的高度,并且根据其内容在我点击父布局时必须在父布局上扩展和折叠的内容与父底部和顶部屏幕对齐,并且底部屏幕自动从顶部屏幕降下来,我可以滚动父版面上的全部内容,请问有人可以帮忙吗
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom_view"
android:background="#3143ff" />
<View
android:id="@+id/bottom_view"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary" />
</RelativeLayout>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final View view = findViewById(R.id.view);
final View contentView = findViewById(R.id.content_frame);
view.setOnClickListener(v -> {
final int screenHeight = contentView.getHeight();
ValueAnimator heightAnimator = ValueAnimator.ofInt(view.getHeight(), screenHeight);
heightAnimator.setDuration(1500);
heightAnimator.addUpdateListener(animation -> {
view.getLayoutParams().height = (int) animation.getAnimatedValue();
view.requestLayout();
});
heightAnimator.start();
});
}
}
答案 0 :(得分:0)
有关更多帮助,请参见FoldingCell for Android。
在您的build.gradle()
中dependencies{
implementation 'com.ramotion.foldingcell:folding-cell:1.2.2'
}
在您的XML
布局中
<com.ramotion.foldingcell.FoldingCell
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/folding_cell"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--Layout One-->
<!--Layout Two-->
</com.ramotion.foldingcell.FoldingCell>
快完成了!剩下两个步骤!为了获得正确的动画效果,您需要在折叠单元格的根元素上设置两个属性:
android:clipChildren =“ false”
android:clipToPadding =“ false”
在您的Java类中
// get our folding cell
final FoldingCell fc = (FoldingCell) findViewById(R.id.folding_cell);
// attach click listener to folding cell
fc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fc.toggle(false);
}
});