Ist es möglich, die Android Snackbar über der Tastatur anzuzeigen (wie in Y-Koordinate, nicht in Ebenen)? Die Snackbar wird derzeit ausgeblendet, wenn die Tastatur angezeigt wird. Dies ist ein unerwünschtes Verhalten.
Einstellen
Android:windowSoftInputMode="adjustResize"
im AndroidManifest.xml
für die Aktivität, die Ihre Snackbar enthält
Sie können die Tastatur ausblenden, wennSnackbar
angezeigt wird.
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
Wenn Sie Ihr Layout in einer ScrollView verschachteln, wird die Snackleiste über der Tastatur angezeigt. Dies liegt daran, dass die Größe der Ansicht geändert wird, um nur den verfügbaren Platz über der Tastatur einzunehmen. Natürlich kann Ihre Ansicht auch jederzeit scrollbar sein, während die Tastatur angezeigt wird oder nicht.
Ich habe das Problem folgendermaßen gelöst:
Erstelle eine Klasse:
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(); } }
Sie können von jeder Aktivität in der Anwendung aus auf diese Klasse zugreifen
Verwendung:
ShowSnackBar.show(LoginOtpActivity.this,"Please enter Email ID /Mobile",linear_container);
Die folgenden Arbeiten:
Snackbar
aufrufen, einen ScrolView
enthält.findViewById(Android.R.id.content)
setzen:Snackbar.make(getActivity().findViewById(Android.R.id.content), "hello world").show();
Snackbar
wegzuwischen, stellen Sie sicher, dass das ScrolView
in einem CoordinatorLayout
verschachtelt ist.Snackbar.make(getActivity().findViewById(Android.R.id.my_coordinator_layout), "hello world").show();
Dies ist mein Code für snackbar und er arbeitet ähnlich wie er benötigt wird relativeLayout ist die übergeordnete Hauptlayout-ID, die ich übergeben habe.
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();