web-dev-qa-db-ger.com

Android SnackBar über der Tastatur anzeigen?

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. 

50
fobbymaster

Einstellen 

Android:windowSoftInputMode="adjustResize"

im AndroidManifest.xml für die Aktivität, die Ihre Snackbar enthält

63
giorgos29cm

Sie können die Tastatur ausblenden, wennSnackbarangezeigt wird. 

InputMethodManager imm = (InputMethodManager)activity.getSystemService(Activity.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0);

9
taken2016

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.

8
Menasheh

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);

1
Nouman Baig

Die folgenden Arbeiten:

  1. Stellen Sie sicher, dass die Aktivität/das Fragment, von der/dem Sie den Snackbar aufrufen, einen ScrolView enthält.
  2. Stellen Sie sicher, dass Sie die Snackbar-Ansicht auf findViewById(Android.R.id.content) setzen:

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

  1. ODER, wenn Sie in der Lage sein möchten, das 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();

1
user7653815

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();
0
Rahul