¿Puedo mostrar el diseño de material Snackbar en el diálogo?
Estoy desarrollando una aplicación para Android. En que quiero mostrar el diseño de material Snackbar en el diálogo. ¿Es posible? En caso afirmativo, ¿cómo?
Por favor, ayúdame.
- Styling ActionMode ActionBar en Android 5.0 Lollipop (con AppCompat)
- Vista fija en el diseño de contenido de Viewpager, bajo CoordinatorLayout
- Cómo utilizar setOutlineProvider en lugar de setOutline en Lollipop
- Android CardView no funciona en Api 21
- Cómo establecer el comportamiento de comprobación compartida en todos los grupos en NavigationView?
Gracias.
- Barra de estado El color no cambia con Disposición relativa como elemento raíz
- El color primario (a veces) se vuelve transparente
- Cómo crear un submenú para el botón de acción flotante en Android Material Design?
- Android: cambiar dinámicamente el icono FAB (botón de acción flotante) del código
- ¿Por qué hay diferentes oppacities para iconos activos e inactivos en el diseño de material?
- Cómo configurar un efecto ripple en textview o imageview en Android?
- Configuración de la aplicación: layout_behavior mediante programación
- Centro de la pestaña activa dentro de TabLayout
Es definitivamente posible, sólo tienes que pasar la Vista del Diálogo a la SnackBar
.
Ejemplo
AlertDialog.Builder mAlertDialogBuilder = new AlertDialog.Builder(this); LayoutInflater inflater = this.getLayoutInflater(); // inflate the custom dialog view final View mDialogView = inflater.inflate(R.layout.dialog_layout, null); // set the View for the AlertDialog mAlertDialogBuilder.setView(mDialogView); Button btn = (Button) mDialogView.findViewById(R.id.dialog_btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Pass the mDialogView to the SnackBar Snackbar .make(mDialogView, "SnackBar in Dialog", Snackbar.LENGTH_LONG) .show(); } }); AlertDialog alertDialog = mAlertDialogBuilder.create(); alertDialog.show();
Resultado
Nota : No es necesario utilizar un CoordinatorLayout
como raíz. En mi ejemplo simplemente usé un LinearLayout como la raíz.
Sí tu puedes.
Para mostrar Snackbar
dentro de su Dialog
cree una View
personalizada para él. Puede leer más sobre esto aquí: Diálogos / Creación de un diseño personalizado
Luego, para mostrar Snackbar
invoque Snackbar.make((dialogView, "text", duration))
donde dialogView
es su vista personalizada.
Si está utilizando un Dialog
entonces:
dialog_share = new Dialog(MainScreen.this, R.style.DialogTheme); dialog_share.requestWindowFeature(Window.FEATURE_NO_TITLE); LayoutInflater inflater = this.getLayoutInflater(); mDialogView = inflater.inflate(R.layout.dialog_share, null); dialog_share.setContentView(mDialogView); dialog_share.getWindow().setBackgroundDrawableResource(R.color.translucent_black); dialog_share.show(); public void ShowSnackBarNoInternetOverDialog() { Snackbar snackbar = Snackbar.make(mDialogView, getString(R.string.checkinternet), Snackbar.LENGTH_LONG); snackbar.setActionTextColor(Color.CYAN); snackbar.setAction("OK", new View.OnClickListener() { @Override public void onClick(View v) { //Toast.makeText(MainScreen.this, "snackbar OK clicked", Toast.LENGTH_LONG).show(); } }); snackbar.show(); }