¿Cómo puedo cambiar la alineación inicial de Android Snackbar de abajo hacia arriba?
La reciente librería android salió hace unos días, pero me gustaría que la SnackBar
aparezca en la parte superior de la pantalla, preferiblemente dentro de un RelativeLayout ya que es la vista principal.
¿Cómo se cambia la alineación inicial de SnackBar
que presumo que es layout_alignParentBottom
a layout_alignParentTop
?
- ¿Cómo puede ajustar Android SnackBar a una posición específica en la pantalla
- Android Snackbar se oculta detrás de la interfaz de usuario del sistema
- SnackBar aparecen animación
- Cómo configurar el color de texto de la barra de ayuda de la biblioteca de soporte a algo que no sea android: textColor?
- Haz que Snackbar empuje la vista hacia arriba
- Cómo agregar Snackbars en un BroadcastReceiver?
- Cómo deshabilitar el comportamiento de "snack-to-dismiss"
- Envolver la altura del contenido en un SnackBar
- ¿Cómo puedo ser notificado cuando una Snackbar se ha despedido?
- ¿Es una buena práctica incluir todos los diseños en CoordinatorLayout?
- En una acción de snackbar, ¿cómo puedo asegurarme de que es seguro borrar de forma permanente un registro borrado por software de la base de datos?
- ¿Podemos realizar 2 acciones diferentes en Snack bar al mismo tiempo en android?
- Biblioteca de soporte de Android Snackbar con longitud indefinida
Es posible hacer que la barra de snack aparezca en la parte superior de la pantalla usando esto:
Snackbar snack = Snackbar.make(parentLayout, str, Snackbar.LENGTH_LONG); View view = snack.getView(); FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)view.getLayoutParams(); params.gravity = Gravity.TOP; view.setLayoutParams(params); snack.show()
Nota: La animación de la barra de aperitivos comienza desde la parte inferior y sube hasta la parte superior de la pantalla como se esperaba porque estaba destinada a estar en el fondo según la respuesta de ianhanniballake.
Para las notificaciones que surgen desde la parte superior, sería mejor conseguir un banner personalizado en su lugar.
No, según la especificación de diseño del material para Snackbars :
Las Snackbars proporcionan retroalimentación ligera sobre una operación mostrando un breve mensaje en la parte inferior de la pantalla.
Como la biblioteca de diseño busca implementar las especificaciones de diseño de material, no es posible colocar la barra de Snack en ninguna posición que no sea la parte inferior de la pantalla (o que contenga CoordinatorLayout
).
Esta es una manera sencilla de agregar SnackBar usando CoordinatorLayout desde la parte superior de la pantalla, pero la animación sigue siendo un problema.
Simplemente agregue un diseño de CoordinatorLayout a su diseño como:
<android.support.design.widget.CoordinatorLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:id="@+id/snackbarlocation"> </android.support.design.widget.CoordinatorLayout>
Y luego en su actividad obtener una referencia a ella y pasarla a la SnackBar como se muestra a continuación:
CoordinatorLayout Clayout = (CoordinatorLayout)findViewById(R.id.snackbarlocation); FabButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Snackbar.make(Clayout, "This snack bar located at top", Snackbar.LENGTH_SHORT).show(); } });
Créditos
Se puede hacer de maneras simples
Primero Cree el diseño donde se incluirá el bocadillo
<LinearLayout android:id="@+id/info_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"/>
Luego en el código
ll_mesg.addView(Snackbar.make(ll_mesg, "Please choose your luck from one of box", Snackbar.LENGTH_LONG) .getView()); new Handler().postDelayed(new Runnable() { public void run() { ll_mesg.removeAllViews(); } } ,1000);
Bueno, puedes obtener el layoutparam de snackbar y cambiar el bottomMargin en el código. me gusta
Snackbar snackbar = Snackbar.make(rootView, message, Snackbar.LENGTH_LONG); View view = snackbar.getView(); FrameLayout.LayoutParams para = (CoordinatorLayout) view.getLayoutParams(); params.bottomMargin = showAtLocation // pass your location offset here view.setLayoutParams(params);
Entonces puedes usar la instancia de snackbar para mostrar cuando quieras
snackbar.show();
- ¿Cómo trabajar con BLE Android 4.3 cómo escribir características?
- Uso del ejemplo de Android InApp Billing V3. Hit Buy, Back Button y comprar de nuevo provoca un error