我正在尝试从google design lib实现 Bottom Sheet 。单击按钮应打开覆盖整个 Activity 窗口的 Bottom Sheet 。就像我们在Gmail的“收件箱”中打开电子邮件时一样。但是,它应该从底部打开并向下滑动以关闭。

单击按钮应打开 Bottom Sheet ,然后向下滑动或单击左上角的关闭(X)按钮应将 Bottom Sheet 关闭。

我已经建立了这样的东西:

<android.support.design.widget.CoordinatorLayout
    .. >

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/bottom_sheet_behavior">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hello Bottom Sheet !!" />

    </android.support.v4.widget.NestedScrollView>

    <include layout="@layout/content_my_activity" />

</android.support.design.widget.CoordinatorLayout>

我像这样初始化它:
    mBottomSheet = (NestedScrollView) findViewById(R.id.bottom_sheet);
    mBottomSheetBehavior = BottomSheetBehavior.from(mBottomSheet);
    mButton = (Button) findViewById(R.id.bottom_sheet_button);
    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
        }
    });

但是,当我单击按钮时,文本仅显示在底部。重叠默认的现有内容。 Bottom Sheet 后面没有黑色透明色。

单击按钮时如何使其全屏显示?

我在这里不使用 fragment 的原因是,我有一些(很多)变量,具体取决于 Bottom Sheet 的内容。因此,如果我通过 fragment 显示 Bottom Sheet ,则需要来回传递和接收所有数据。为了避免这种情况,我希望它成为 Activity 的一部分。

有什么办法可以做到这一点?谢谢你的帮助。

最佳答案

mButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        mBottomsheet.callOnClick();
    }
});

试试这个代码........

关于android - 全屏 Bottom Sheet 单,顶部带有“关闭”(X)按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38482216/

10-12 04:25