Можно ли показать BottomSheet за другим представлением? - PullRequest
0 голосов
/ 30 апреля 2018

Можно ли открыть BottomSheet за другим видом? (В моем случае кнопка) Какой макет мне использовать для этого?

enter image description here

1 Ответ

0 голосов
/ 30 апреля 2018

да, вы можете показать любой элемент управления на нижнем листе, я предоставляю свой код ..

В этом коде я использовал показ нижнего листа в макете карты, вы можете управлять в соответствии с потребностями ..

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout    xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

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

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

затем сделайте bottom_sheet xml

<?xml version="1.0" encoding="utf-8"?>

 <LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:orientation="vertical"
android:padding="20dp"
app:behavior_hideable="true"
app:behavior_peekHeight="100dp"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:orientation="horizontal"
    android:weightSum="3">

    <TextView
        android:id="@+id/flTvData"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:text="Order Details"
        android:textColor="#444"
        android:textSize="18dp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/flTvKm"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="right"
        android:textSize="15dp"
        android:textStyle="bold"></TextView>
</LinearLayout>


<TextView
    android:id="@+id/flTvDuration"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />


</LinearLayout>

затем после использования в main_activity ..

 private BottomSheetBehavior behavior;
private LinearLayout layoutBottomSheet;
 layoutBottomSheet=findViewById(R.id.bottom_sheet);

   mTvData = findViewById(R.id.flTvData);
    mTvKm = findViewById(R.id.flTvKm);
    mTvDuration = findViewById(R.id.flTvDuration);

          BottomSheetBehavior.from(layoutBottomSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
    behavior=BottomSheetBehavior.from(layoutBottomSheet);

вы можете обрабатывать события клика или управлять расширением и другими вещами ..

 behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
                @Override
                public void onStateChanged(@NonNull View bottomSheet, int newState) {
                    switch (newState) {
                        case BottomSheetBehavior.STATE_HIDDEN:
                            break;
                        case BottomSheetBehavior.STATE_EXPANDED: {
                            mTvData.setText(endTitle);
                            mTvKm.setText(km);
                            mTvDuration.setText(duration);
                        }
                        break;
                        case BottomSheetBehavior.STATE_COLLAPSED: {
                        }
                        break;
                        case BottomSheetBehavior.STATE_DRAGGING:
                            break;
                        case BottomSheetBehavior.STATE_SETTLING:
                            break;
                    }

                }

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

                }
            });

            behavior.setPeekHeight(100);
            layoutBottomSheet.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (activityCallName.equals("UserPlaceInput")){
                        Intent intent = new Intent(MapsActivity.this, PlaceDetails.class);
                        intent.putExtra("placeId", placeId);
                        startActivity(intent);

                    }
                    else {
                        Intent intent = new Intent(MapsActivity.this, ShowAllSteps.class);
                        intent.putExtra("Response", response);
                        startActivity(intent);
                    }
                }
            });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...