android - Bottom Sheet 全屏显示

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

我试图不让 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);
                }

            }
        });

您能否解决我的问题并建议一种方法,使 Bottom Sheet 不占据整个屏幕,而是在展开时在上面留出一些空间。 谢谢

最佳答案

一个简单的技巧就完成了。我现在无法阻止 Bottom Sheet 全屏显示,因此我有一个对我所需大小透明的 View ,通过将其添加到 BottomSheetLayout 解决了我的问题

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

关于android - Bottom Sheet 全屏显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44492537/

相关文章:

java - HttpMethod.releaseConnection() 和 EntityUtils.consume(entity) 的问题

java - 如何用 Gradle 生成 javadoc?

android - 以声明方式将宽度分配给可用屏幕宽度的一半

android - 我想在对话框 fragment 中设置最大高度

android - 如何在 Android 的布局 XML 文件中设置 View 的属性?

android - Recyclerview + viewpager,让toolbar崩溃

android - 如何实现 ALTER TABLE 的示例

android - 如何干扰 RecyclerView 的不可见项目?

android - 如何使用recyclerview实现Material Design父子过渡

android - 根据 Material 设计规范创建 "Simple Menu"