使用NestedScrollView的BottomSheetBehaviour

时间:2017-01-07 08:47:21

标签: android xml bottom-sheet

我使用Nestedscrollview作为Bottomsheetbehaviour,但是当它从正常状态更改为从工具栏左侧扩展一些空间时,但是当第二次状态从正常状态更改为扩展状态时,它工作正常..

看起来它留下的空间正好是我在xml中为工作表提供的边距的两倍。我的代码看起来像这样......

MyLayoutFile.xml

<android.support.design.widget.CoordinatorLayout
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/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
tools:context=".fragments.StoreLocationDetailsFragment">

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

<FrameLayout
    android:id="@+id/mapHolder"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?android:attr/actionBarSize"/>

<include android:id="@+id/nested_scroll_view"
         layout="@layout/store_details_scroll_view"/>

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

store_details_scroll_view.xml

<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?android:attr/actionBarSize"
android:background="@color/colorLightGrey"
android:clipToPadding="true"
app:behavior_peekHeight="0dp"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="true"
    android:focusable="true"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:paddingTop="@dimen/activity_horizontal_margin">

    <TextView
        android:id="@+id/tvStoreName"
        style="@style/styleOswaldBold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/activity_horizontal_margin"
        android:text="Adidas Shoes"
       android:textAppearance="@style/Base.TextAppearance.AppCompat.Title"/>

    <TextView
        android:id="@+id/tvAddress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/sub_title"
        android:textAlignment="center"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="@dimen/activity_horizontal_margin"
        android:background="@color/colorDarkGrey"/>
   </LinearLayout>
</android.support.v4.widget.NestedScrollView>

onClick 中的代码java文件中的函数类似于

 View bottomSheet = rootLayout.findViewById(R.id.nested_scroll_view);
        behavior = BottomSheetBehavior.from(bottomSheet);

        behavior.setPeekHeight(new ScreenDimensions(getActivity())
                .getHeightWithGivenPercentage(60));
        behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                switch (newState) {
                    case BottomSheetBehavior.STATE_DRAGGING:
                        break;
                    case BottomSheetBehavior.STATE_COLLAPSED:
                        behavior.setPeekHeight(0);
                        break;
                    case BottomSheetBehavior.STATE_EXPANDED:
                        break;
                }
            }

            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {

            }
        });

此处rootlayout是我的Coordinator layout。任何人都可以建议我解决上述问题。提前谢谢。

0 个答案:

没有答案