Stellen Sie FAB (Floating Action Button) über der Tastatur ein

Lesezeit: 2 Minuten

Benutzer-Avatar
David

Hier schon gefragt, aber ohne richtige Antwort.

Ich möchte, dass der FAB auf der Tastatur schwebt. das ist es.

Zum Beispiel

  1. Öffnen Sie eine neue Blank Activity Vorlagenprojekt mit Android Studio
  2. Ändern Sie die Hallo Welt TextView zu EditText
  3. Siehe Bild unten:

Geben Sie hier die Bildbeschreibung ein

Es stellt sich heraus, dass es ziemlich einfach ist,

  • Hinzufügen android:windowSoftInputMode="adjustResize" zu Ihrer Tätigkeit im Manifest
  • Stellen Sie sicher, dass Ihre Stammansicht im Layout-XML, hat android:fitsSystemWindows="true" Eigentum

  • Es funktioniert ohne android:fitsSystemWindows="true"Zumindest für LinearLayout.

    – Daniel Olszewski

    31. Dezember 2015 um 16:16 Uhr

  • Oder programmgesteuert: this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

    – drmrbrewer

    27. Juni 2016 um 21:35 Uhr

  • Es funktioniert NICHT in Kombination mit: this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

    – Dennis

    27. Dezember 2019 um 8:51 Uhr

  • Es funktioniert auch ohne android:fitsSystemWindows=”true” für ConstraintLayout.

    – ABN

    15. April 2020 um 12:12 Uhr

  • Funktioniert ohne android:fitsSystemWindows="true" auch im Koordinator-Layout

    – Abhishek Saxena

    9. Juli 2020 um 11:26 Uhr

Wenn Sie möchten, dass sich FloatingActionBar über der Tastatur bewegt, sollten Sie:

1) FloatingActionBar in CoordinatorLayout einfügen:

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:id="@+id/coordinator"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="16dp"
        android:src="https://stackoverflow.com/questions/34190716/@drawable/ic_img" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

2) Fügen Sie in der Root-Ansicht (wo Ihr FAB vorhanden ist) Code hinzu:

android:fitsSystemWindows="true".

Zum Beispiel:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical"
    tools:context=".AddFilm">

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/coordinator"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_margin="16dp"
            android:src="https://stackoverflow.com/questions/34190716/@drawable/ic_img" />

    </androidx.coordinatorlayout.widget.CoordinatorLayout>

</LinearLayout>

3) Fügen Sie Ihrer Aktivität den nächsten Code in AndroidManifest.xml hinzu:

android:windowSoftInputMode="adjustResize"

Zum Beispiel:

<activity
        android:name=".MainActivity"
        android:windowSoftInputMode="adjustResize"/>

Wenn Sie ein bestimmtes Fragment verwenden, können Sie diesen Code verwenden und für die Aktivität einfach entsprechend ändern.

    view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            Rect r = new Rect();
            view.getWindowVisibleDisplayFrame(r);
            if (v.getRootView().getHeight() - (r.bottom - r.top) > 500) {
                //Log.d("keyboardStatus","opened");
                fab.setVisibility(View.GONE);
            } else {
               // Log.d("keyboardStatus","closed");
                fab.setVisibility(View.VISIBLE);
            }
        }
    });

1186030cookie-checkStellen Sie FAB (Floating Action Button) über der Tastatur ein

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy