安卓:自定义底部弹出式对话框

6
我该如何使用Android标准组件底部工作表来实现以下设计功能:
  1. 底部工作表对话框片段出现时的图像:

enter image description here

2. 当用户向上滚动以查看内容底部时出现的图像:

enter image description here

我将使用ViewPager来滚动头部图片,使用RecyclerView来展示描述和其他信息。当垂直滚动内容时,对于放置在ViewPager中的ImageView使用视差效果。ImageView(以及ViewPager)具有最小高度,用户无法将其完全折叠(请参见第二张截图,该用户滚动到内容末尾)。
我希望在ImageView达到最小高度时停止滚动(请参见第二张截图),但是下面的内容应该继续滚动。

在我的应用程序中,我只使用了 BottomSheetDialog,创建了一个自定义视图,它可以很好地工作,当我滚动到底部时,我可以完全折叠我的视图。 - Hoàng Vũ Anh
是的,它会完全滚动,但我希望当ImageView达到最小高度时停止它。 - SBotirov
1个回答

1
这可以通过在滚动视图中使用if语句来实现,如下所示:
ScrollView scrollView = findViewById(R.id.scrollView); //Adjust for your code
ImageView imageView = findViewById(R.id.imageView); //Adjust for your code
boolean imageIsHidden = false;
int threshold = 250;
scrollView.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener() {
    @Override
    public void onScrollChanged() {
        int scrollY = rootScrollView.getScrollY();
        if(scrollY >= threshold){
            imageIsHidden = true;
            //Move image outside of scroll view so it doesn't scroll
        }
        else if(scrollY < threshold && imageIsHidden){
            imageIsHidden = false;
            //Move image inside of scroll view so it does scroll
        }
    }
});    

这段代码定义了一个布尔变量imageIsHidden和一个整数变量threshold,其中threshold是图片消失的阈值,你需要尝试不同的值来找到最佳效果。同时,在if语句和else if语句中还需要实现将图片在滚动视图内外移动的功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接