如何将BottomSheet设置到底部导航视图的顶部

3
我将尝试展示底部菜单栏和底部工作表。 但是重叠了。请点击此处查看 我该如何给底部工作表设置底部边距。
XML代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/bottomSheet"
    android:background="@android:color/white"
    android:paddingTop="@dimen/activity_horizontal_margin"
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/bottomSheetRecyclerview"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </android.support.constraint.ConstraintLayout>

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

实现代码:

 override fun openBottomDialogView() {

        val bottomSheetView= findViewById<NestedScrollView>(R.id.bottomSheet) as NestedScrollView
        Log.e("Bottom sheet view ",bottomSheetView.toString())


         dashboardBottomSheetBehaviour = BottomSheetBehavior.from(bottomSheetView)
            dashboardBottomSheetBehaviour.isHideable=true

        if(dashboardBottomSheetBehaviour.getState() != BottomSheetBehavior.STATE_EXPANDED) {

            bottomSheetRecyclerview.layoutManager= LinearLayoutManager(this@DashboardActivity) as RecyclerView.LayoutManager?
            bottomSheetRecyclerview.adapter= BottomSheetDialogAdaptor(this@DashboardActivity, getBottomSheetitem())
            dashboardBottomSheetBehaviour.setState(BottomSheetBehavior.STATE_EXPANDED);
        }
        else {
            closeBottomView()
        }
    }

我尝试设置嵌套滚动视图的固定高度,然后给出边距,但这也没有起作用。
关于我遇到的新问题。
fun closedBottomView(){
     Log.e("CLose ","Old bottom sheet")
        dashboardBottomSheetBehaviour.state=BottomSheetBehavior.STATE_HIDDEN
        Log.e("Final state ",dashboardBottomSheetBehaviour.state.toString())

}

最终日志显示底部面板状态为STATE_SETTLING。但回调函数表示其处于HIDDEN状态。

2个回答

2
尝试使用:layout_anchor将您的BottomNavigationView锚定在BottomSheetView的顶部/底部。
 app:layout_anchor="@+id/bottomSheet" --> BottomSheet view ID
 app:layout_anchorGravity="bottom|end"

如需更多信息,请查看此链接


这解决了我的问题,但也带来了新的问题。现在底部表单不再折叠。 - Ankur_009
设置底部工作表的最小高度...并重写回调方法以找出它处于哪种状态..参见此链接:http://android-er.blogspot.com/2016/06/sets-height-of-collapsed-bottom-sheet.html - rafsanahmad007
我认为我不需要覆盖回调方法,因为我正在使用 FAB 控制表单的显示/隐藏状态。 - Ankur_009
我的意思是为了调试目的...因为我找不到它不崩溃的原因。 - rafsanahmad007

0

我的解决方法是将原始的底部Sheet与一个视图进行包装,并使用72dp(大约为底部导航栏的大小)设置最顶层视图的大小。 例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="184dp"
app:behavior_hideable="true"
android:backgroundTint="@android:color/transparent"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
tools:showIn="@layout/activity_main">


<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="112dp"
    android:background="@drawable/bg_rounded_transparent">

    <ImageView
        android:id="@+id/imageViewThumbnailMap"
        android:layout_width="156dp"
        android:layout_height="match_parent"
        android:background="@drawable/bg_rounded_transparent"
        android:scaleType="fitXY"
        android:src="@drawable/ic_logo"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/textViewThumbnailDistance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:textAppearance="@style/TextAppearance.AppCompat.Caption"
        app:layout_constraintBottom_toTopOf="@+id/textViewThumbnailName"
        app:layout_constraintStart_toEndOf="@+id/imageViewThumbnailMap"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="5km" />

    <TextView
        android:id="@+id/textViewThumbnailName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:textAppearance="@style/TextAppearance.AppCompat.Headline"
        app:layout_constraintBottom_toTopOf="@+id/textViewThumbnailDateTime"
        app:layout_constraintStart_toEndOf="@+id/imageViewThumbnailMap"
        app:layout_constraintTop_toBottomOf="@+id/textViewThumbnailDistance"
        tools:text="Karaoke golos" />

    <TextView
        android:id="@+id/textViewThumbnailDateTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:textAppearance="@style/TextAppearance.AppCompat.Light.SearchResult.Subtitle"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toEndOf="@+id/imageViewThumbnailMap"
        app:layout_constraintTop_toBottomOf="@+id/textViewThumbnailName"
        tools:text="19:30-23:50" />
</android.support.constraint.ConstraintLayout>

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接