【问题标题】:Bottomsheet takes full screen底页全屏
【发布时间】:2017-06-12 06:18:26
【问题描述】:

我试图不让BottomSheet 填充整个屏幕,但在展开时在上方留出一些空间。这是我的 onExpand 填充整个屏幕的代码。

bottomSheetBehavior = BottomSheetBehavior.from(bottomLayout);
        bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);

        bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                switch (newState) {
                    case BottomSheetBehavior.STATE_DRAGGING:
                        Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_DRAGGING");
                        break;
                    case BottomSheetBehavior.STATE_SETTLING:
                        Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_SETTLING");
                        break;
                    case BottomSheetBehavior.STATE_EXPANDED:
                        Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_EXPANDED");
                        break;
                    case BottomSheetBehavior.STATE_COLLAPSED:
                        Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_COLLAPSED");
                        break;
                    case BottomSheetBehavior.STATE_HIDDEN:
                        Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_HIDDEN");
                        break;

                }
            }

            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {
                Log.i("BottomSheetCallback", "slideOffset: " + slideOffset);
                boolean drawer = getSupportFragmentManager().getBackStackEntryCount() == 0;
                ObjectAnimator.ofFloat(drawerArrow, "progress", drawer ? 0 : 1).start();
            }
        });


        bottomLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Log.v(TAG, "ONCLickListner");

                if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) {
                    Log.v(TAG,"state expand");
                    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
                } else {
                    Log.v(TAG,"state collapse");
                    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                }

            }
        });

您能否解决我的问题并提出一种方法,使底页不占用整个屏幕,而是在展开时在上方留出一些空间。 谢谢

【问题讨论】:

  • 在 xml 或 java 文件中设置 peekheight
  • 我相信 peekHeight 适用于 Sheet 的底部高度而不是上面的间距

标签: android android-layout material-design bottom-sheet


【解决方案1】:

一个简单的技巧就做到了。我现在无法阻止底部工作表全屏显示,所以我有一个透明的视图,我需要的大小,通过将它添加到 bottomSheetLayout 解决了我的问题

<View
    android:layout_width="match_parent"
    android:id="@+id/spaccer"
    android:layout_height="28dp"
    android:background="@android:color/transparent"
    android:alpha="0.6"/>

【讨论】:

    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 2018-12-20
    • 2014-11-27
    • 1970-01-01
    • 2013-04-29
    • 2016-10-16
    • 2013-08-19
    • 2018-02-15
    相关资源
    最近更新 更多