Android:自定义底页对话框

Posted

技术标签:

【中文标题】Android:自定义底页对话框【英文标题】:Android: Custom bottom sheet dialog 【发布时间】:2019-01-02 03:17:22 【问题描述】:

如何使用android标准组件底页实现以下设计功能:

    底部工作表对话框片段出现时的图像:

    用户向上滚动以查看内容底部时的图像:

我将使用 ViewPager 来滚动标题图像,并使用 RecyclerView 来显示描述和其他信息。以及垂直滚动内容时对 ImageView(放置在 ViewPager 中)的视差效果。具有 ImageView(和 ViewPager)的最小高度,用户不能完全折叠它(查看第二个屏幕截图,用户滚动到内容末尾)。

我想在 ImageView 达到最小高度时停止滚动(查看第二个屏幕截图),但 ImageView 下面的内容应该继续滚动

【问题讨论】:

在我的应用程序中,我只使用 BottomSheetDialog,创建自定义视图,它工作正常,当我滚动到末尾时,我可以完全折叠我的视图。 是的,它会完全滚动,但我想在 imageview 达到最小高度时停止它 【参考方案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 的整数。阈值是您希望它消失的地方。您将需要使用此值来找到最佳位置。

您还需要在 if 和 if else 语句中实现在滚动视图内外移动图像。

【讨论】:

以上是关于Android:自定义底页对话框的主要内容,如果未能解决你的问题,请参考以下文章

android自定义对话框背景

Android对话框自定义标题

如何创建具有自定义布局的模态底页?

自定义警报对话框android

Android:在容器中心显示自定义对话框

Android自定义对话框大小[重复]