Cómo agregar el diseño de fondo en el cuadro de diálogo Modal BottomSheet?

Quiero lograr el diseño como este usando BottomSheetDialogFragment . Pero el problema es que el diseño de fondo se desplaza cuando arrasto. Quiero que el diseño del fondo siempre BottomSheetDialogFragment en la parte inferior hasta que BottomSheetDialogFragment sea ​​descartado.

Encuentre la captura de pantalla

ButtonSheetDialogFragment

Aquí está mi código

Bottomsheet_layout.xml

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <!--The main content goes over here--> </LinearLayout> <!--The footer view--> <LinearLayout android:id="@+id/footer_purchase_layout" android:layout_width="match_parent" android:layout_height="52dp" android:layout_gravity="bottom" android:orientation="horizontal" android:weightSum="1"> <TextView android:id="@+id/txt_cancel_purchase" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.5" android:gravity="left|center_vertical" android:text="CLOSE" android:textSize="14sp" /> <TextView android:id="@+id/txt_item_purchase_action" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.5" android:gravity="right|center_vertical" android:text="ADD STICKERS" android:textSize="14sp" /> </LinearLayout> </FrameLayout> 

ModalBottomSheetFragment.java

 public class ModalBottomSheetFragment extends BottomSheetDialogFragment { public ModalBottomSheetFragment() {} private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { if (newState == BottomSheetBehavior.STATE_HIDDEN) { dismiss(); } } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) {} }; @TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) @Override public void setupDialog(Dialog dialog, int style) { super.setupDialog(dialog, style); View mContentView = View.inflate(getContext(), R.layout.bottomsheet_layout, null); dialog.setContentView(mContentView); CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) ((View) mContentView.getParent()).getLayoutParams(); CoordinatorLayout.Behavior mBehavior = layoutParams.getBehavior(); if (mBehavior != null && mBehavior instanceof BottomSheetBehavior) { ((BottomSheetBehavior) mBehavior).setBottomSheetCallback(mBottomSheetBehaviorCallback); int height = getScreenHeight(getActivity()); final double desiredHeight = 0.85 * height; mContentView.getLayoutParams().height = height; ((BottomSheetBehavior) mBehavior).setPeekHeight((int) desiredHeight); } } public static int getScreenHeight(Context ctx) { DisplayMetrics metrics = ctx.getResources().getDisplayMetrics(); return metrics.heightPixels; } } 

MainActivity.java

 public class MainActivity extends AppCompatActivity { private Button mShowBottomSheetDialog; private BottomSheetDialogFragment bottomSheetDialogFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mShowBottomSheetDialog = (Button) findViewById(R.id.showBottomSheet); mShowBottomSheetDialog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { bottomSheetDialogFragment = new ModalBottomSheetFragment(); bottomSheetDialogFragment.show(getSupportFragmentManager(), bottomSheetDialogFragment.getTag()); } }); } } 

Utilice este diseño en lugar de su diseño ….

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="10" android:orientation="vertical"> <!--The main content goes over here--> </LinearLayout> </ScrollView> <!--The footer view--> <LinearLayout android:id="@+id/footer_purchase_layout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:weightSum="1"> <TextView android:id="@+id/txt_cancel_purchase" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.5" android:gravity="left|center_vertical" android:text="CLOSE" android:textSize="14sp" /> <TextView android:id="@+id/txt_item_purchase_action" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.5" android:gravity="right|center_vertical" android:text="ADD STICKERS" android:textSize="14sp" /> </LinearLayout> </LinearLayout> </FrameLayout> 

Nota: – El peso divide su disposición en diversa visión que es constante en su disposición ……

  • La aplicación se bloquea al cambiar de actividad de cocos2d-x a otra actividad en Android
  • Cómo agarrar JSON Array y utilizar gson para analizar cada objeto json? (Retrofit)
  • Cómo borrar el texto en edittext
  • JAVAH no puede encontrar clase (android ndk)
  • El Jar de este archivo de clase blongs al contenedor Android 2.0.1 que no permite modificaciones
  • Android Design Navigation Drawer - ¿Cómo agregar un conmutador en el navegador xml?
  • Set Ancho dinámicamente de textview
  • Google Analytics para Android: establece información sobre dispositivo móvil
  • Convex Hull en Java Android Opencv 2.3
  • Cómo evitar java.lang.NoClassDefFoundError: android / os / PersistableBundle en pre-L?
  • Pasando enActividadResultado en Córdoba
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.