Cómo implementar Bottom Sheets usando la nueva biblioteca de soporte de diseño 23.2

Google lanzó la nueva actualización a la biblioteca de soporte 23.2 en que agregaron la función de hoja inferior. ¿Puede alguien decir cómo implementar esa hoja inferior usando esa biblioteca.

Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

Utilizar el diseño como a continuación

<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"> <android.support.design.widget.AppBarLayout> <android.support.design.widget.CollapsingToolbarLayout> <ImageView/> <android.support.v7.widget.Toolbar/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout> //..... </LinearLayout> </android.support.v4.widget.NestedScrollView> <FrameLayout android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="wrap_content" app:behavior_hideable="true" app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> //your bottom sheet layout </LinearLayout> </FrameLayout> <android.support.design.widget.FloatingActionButton/> </android.support.design.widget.CoordinatorLayout> 

En Actividad

 CoordinatorLayout coordinatorLayout = (CoordinatorLayout) findViewById(R.id.main_content); // The View with the BottomSheetBehavior View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet); final BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet); behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { // React to state change Log.e("onStateChanged", "onStateChanged:" + newState); if (newState == BottomSheetBehavior.STATE_EXPANDED) { fab.setVisibility(View.GONE); } else { fab.setVisibility(View.VISIBLE); } } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { // React to dragging events Log.e("onSlide", "onSlide"); } }); behavior.setPeekHeight(100); 

Puede seguir las instrucciones que se proporcionan aquí: http://android-developers.blogspot.com/2016/02/android-support-library-232.html

" Al adjuntar BottomSheetBehavior a un niño View de un CoordinatorLayout (es decir, añadiendo app: layout_behavior =" android.support.design.widget.BottomSheetBehavior "), automáticamente obtendrá la detección de toque apropiada para la transición entre cinco estado … "

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:background="@color/white"> <!-- Your Widgets --> <FrameLayout android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ff0000" app:behavior_hideable="true" app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Test" /> </FrameLayout> </android.support.design.widget.CoordinatorLayout> 

Luego de su actividad:

 View bottomSheet = findViewById(R.id.bottom_sheet); BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet); bottomSheetBehavior.setState(<desired state>); 

Gradle: primer uso compile 'com.android.support:design:23.2.0'

En su diseño

 <include layout="@layout/content_sheet" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@android:drawable/ic_dialog_email" /> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/bottom_sheet" app:layout_behavior="android.support.design.widget.BottomSheetBehavior" style="@style/Widget.Design.BottomSheet.Modal"> <CalendarView android:layout_width="match_parent" android:layout_height="match_parent"></CalendarView> </FrameLayout> 

En java

  CoordinatorLayout coordinatorLayout= (CoordinatorLayout) findViewById(R.id.cl_main); final View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet); final BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet); behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { // React to dragging events } }); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { behavior.setState(BottomSheetBehavior.STATE_EXPANDED ); } }); 

Puede seguir el tutorial en tutsplus.com https://code.tutsplus.com/articles/how-to-use-bottom-sheets-with-the-design-support-library–cms-26031

 <android.support.design.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/coordinator_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.gms.maps.MapView android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent" app:uiCompass="true" app:uiMapToolbar="false" /> <android.support.v4.widget.NestedScrollView        android:id="@+id/bottom_sheet"        android:layout_width="match_parent" app:behavior_peekHeight="100dp" app:behavior_hideable="true"        android:layout_height="350dp"        android:clipToPadding="true"        android:background="@android:color/holo_orange_light"        app:layout_behavior="android.support.design.widget.BottomSheetBehavior"        >        <TextView            android:layout_width="match_parent"            android:layout_height="match_parent"            android:text="@string/ipsum"            android:padding="16dp"            android:textSize="16sp"/>    </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout> 

Si quieres que se descarte, asegúrate de añadir la app:behavior_hideable="true" en la etiqueta.

Dentro de su actividad usted puede decir:

  BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(findViewById(R.id.bottom_sheet)); mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); findViewById(R.id.button).setOnClickListener(p-> mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED)); 
  • Cómo ocultar la barra de herramientas después de colapsar mientras que recyclerView desplazamiento hacia abajo
  • ¿Compartiendo NavigationView con todas las actividades?
  • Android BottomSheetDialogFragment no se expande por completo
  • Cómo crear AppBarLayout que se superpone contenido de CoordinatorLayout
  • Elementos de menú de la barra de herramientas apretados después de cambiar a la biblioteca de soporte 26 y AppBarActivity a AppCompatActivity
  • Espacio en blanco debajo de CoordinatorLayout en DrawerLayout
  • Cómo inhabilitar el arrastre del usuario en la parte inferior
  • Establecer layout_anchor en tiempo de ejecución en FloatingActionButton
  • AppBarLayout.setExpanded (boolean, true) animación extraña en la biblioteca de soporte 23.1.1
  • Cambiar los iconos TabLayout a la izquierda, arriba, derecha o abajo en com.android.support:design:23.1.0
  • Cambiar el color del RadioButton en la API 19 y siguientes?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.