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

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

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

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

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

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

【问题讨论】:

  • 在我的应用程序中,我只使用 BottomSheetDialog,创建自定义视图,它工作正常,当我滚动到末尾时,我可以完全折叠我的视图。
  • 是的,它会完全滚动,但我想在 imageview 达到最小高度时停止它

标签: dialog fragment parallax bottom-sheet android-nestedscrollview


【解决方案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 语句中实现在滚动视图内外移动图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 2015-04-13
    相关资源
    最近更新 更多