snack example custom bar android android-snackbar

example - ¿Mostrar Android SnackBar sobre el teclado?



snackbar material design (7)

¿Es posible mostrar la Snackbar de Android sobre el teclado (como en la coordenada Y, no en capas)? El Snackbar actualmente se oculta si se muestra el teclado, lo cual es un comportamiento indeseable.


Conjunto

android:windowSoftInputMode="adjustResize"

en AndroidManifest.xml para la actividad que contiene su snackbar


Este es mi código para snackbar y funciona de manera similar + ya que necesita relativeLayout es el ID de diseño principal principal que he aprobado.

snackbar=snackbar.make(relativeLayout,"Image is Saved to "+Savedfile.getPath().toString(),Snackbar.LENGTH_INDEFINITE) .setAction("OK", new OnClickListener() { @Override public void onClick(View v) { snackbar.dismiss(); snackbar=null; System.gc(); finish(); } }); snackbar.show();


Los siguientes trabajos:

  1. Asegúrese de que la actividad / fragmento desde el que está llamando a Snackbar contenga un ScrolView .
  2. Asegúrese de configurar la vista de snackbar para findViewById(android.R.id.content) :

Snackbar.make(getActivity().findViewById(android.R.id.content), "hello world").show();

  1. O, si desea poder deslizar la Snackbar , asegúrese de que ScrolView esté anidado dentro de un CoordinatorLayout .

Snackbar.make(getActivity().findViewById(android.R.id.my_coordinator_layout), "hello world").show();


Puede ocultar el teclado cuando se muestra Snackbar .

snackbar=snackbar.make(relativeLayout,"Image is Saved to "+Savedfile.getPath().toString(),Snackbar.LENGTH_INDEFINITE) .setAction("OK", new OnClickListener() { @Override public void onClick(View v) { snackbar.dismiss(); snackbar=null; System.gc(); finish(); } }); snackbar.show();


Si anida su diseño en una Vista de desplazamiento, la barra de aperitivos aparecerá en la parte superior del teclado. Esto se debe a que la vista cambiará de tamaño para ocupar solo el espacio disponible sobre el teclado. Y, por supuesto, su Vista también podrá desplazarse si es necesario en cualquier momento, mientras se muestre o no el teclado.


este es mi código, no es necesario configurar la vista desde el método, puede obtenerlo desde DecoreView:

public static void longSnack(final String text) { hideKeyboard(); Snackbar snackbar = Snackbar.make(context.getWindow().getDecorView(), text, Snackbar.LENGTH_LONG); snackbar.show(); } public static void shortSnack(final String text) { hideKeyboard(); Snackbar snackbar = Snackbar.make(context.getWindow().getDecorView(), text, Snackbar.LENGTH_SHORT); snackbar.show(); } private static void hideKeyboard() { InputMethodManager inputMethodManager = (InputMethodManager)context.getSystemService(Activity.INPUT_METHOD_SERVICE); if (inputMethodManager != null) { inputMethodManager.hideSoftInputFromWindow(context.getWindow().getDecorView().getWindowToken(), 0); } }


He resuelto el problema de esta manera:

Crear una clase:

public class ShowSnackBar { public static void show(Context context, String message, View view) { InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); Snackbar.make(view, message, Snackbar.LENGTH_SHORT).show(); } }

Puede acceder a esta clase desde cualquier actividad en la aplicación

Uso:

ShowSnackBar.show(LoginOtpActivity.this,"Please enter Email ID /Mobile",linear_container);