全屏底部工作表,顶部带有关闭(X)按钮
Posted
技术标签:
【中文标题】全屏底部工作表,顶部带有关闭(X)按钮【英文标题】:Full Screen Bottom Sheet with Close(X) button at the top 【发布时间】:2016-11-23 17:55:09 【问题描述】:我正在尝试从谷歌设计库中实现一个底页。单击按钮应打开覆盖整个活动窗口的底部工作表。就像我们在 Inbox by Gmail 中打开电子邮件一样。但是,它应该从底部打开并向下滑动以关闭。
单击按钮应打开底部工作表,向下滑动或左上角关闭 (X) 按钮应关闭工作表。
我已经设置了这样的东西:
<android.support.design.widget.CoordinatorLayout
.. >
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottom_sheet"
android:layout_
android:layout_
app:layout_behavior="@string/bottom_sheet_behavior">
<TextView
android:layout_
android:layout_
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);
);
但是,当我单击按钮时,文本仅显示在底部。重叠默认的现有内容。并且底片后面没有黑色透明色调。
点击按钮时如何使其全屏显示?
我在这里不使用片段的原因是,我有一些(很多)变量,具体取决于底部表格的内容。所以,如果我通过片段显示底部表,我需要来回传递和接收所有数据。为了避免这种情况,我希望它成为活动的一部分。
有什么方法可以实现吗?感谢您的帮助。
【问题讨论】:
没有Fragment
是一个糟糕的理由。
我知道! :( 有很多数据可以用来准备底部表格内容。
而您不能在Fragment
中这样做,为什么?
还有这个:android:layout_height="wrap_content"
。底部工作表的高度设置为 wrap_content
而不是 match_parent
。
我需要设置监听器,这两种方式都会影响数据,更改底部表单的内容,在更改底部表单内容时,需要更改主要活动内容的一些内容。
【参考方案1】:
当你点击按钮时,你可以认为这个动作就像你的 NestedScrollView 容器刚刚变得可见,所以它会像你在 params 中写的那样发生
android:layout_
android:layout_
如果您希望它采用完整的父高度,只需使用
android:layout_
如果要谈论像片段这样的阴影背景,您可以欺骗您可以为 NestedScrollView 设置背景 alpha 颜色
android:background="#64000000"
但这是一种 hack,您可以使用片段并将所有信息从活动发送给它,反之亦然
【讨论】:
【参考方案2】:mButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
mBottomsheet.callOnClick();
);
试试这个代码............
【讨论】:
以上是关于全屏底部工作表,顶部带有关闭(X)按钮的主要内容,如果未能解决你的问题,请参考以下文章