Was macht FrameLayout?

90

Ich bin neu in der Programmierung. Ich habe damals beim Lesen der XML-Datei das grafische Layout verwendet und FrameLayout gesehen. Dann habe ich gesucht, aber ich konnte nichts Nützliches finden. Was ist FrameLayout und was macht es?

Amin Ghasemi
quelle
1
Bist du hier durchgemacht? developer.android.com/reference/android/widget/FrameLayout.html
Ed_Fernando
10
Ja, ich war dort gewesen, aber ich konnte nichts finden, was verständlich wäre.
Amin Ghasemi

Antworten:

185

Sie verwenden ein FrameLayout, um untergeordnete Ansichten übereinander zu stapeln, wobei das neueste untergeordnete Element über dem Stapel liegt. Im folgenden Beispiel ist die Textansicht die aktuellste, sodass sie automatisch über der Bildansicht platziert wird.

Beispielsweise:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/backgroundImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        android:src="@drawable/bitmapie" />

    <TextView
        android:id="@+id/descTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginTop="70dp"
        android:background="@android:color/holo_blue_light"
        android:padding="10dp"
        android:text="TextView placed at the top of the Imageview"
        android:textColor="@android:color/white"
        android:textSize="22sp" />

</FrameLayout>

Ausgabe:

Geben Sie hier die Bildbeschreibung ein

Ojonugwa Jude Ochalifu
quelle
36
Ich liebe es, Code mit ihrer Ausgabe zu sehen. Vielen Dank! Upvoted. Ich mag auch das Design, das du dort gemacht hast. Einfach doch sehr schön!
Tarik
3
Sehr einfache, leistungsstarke und dennoch einfache Erklärung - danke @ojonugwaochalifu!
Coder Absolute
2
Sehr gute Erklärung. Ich habe auch die Beschreibung des Entwicklers auf der offiziellen Seite gelesen und dachte, der Ausdruck "oben" bedeutet mehr oben auf dem Bildschirm. Ihre Erklärung hat die 3D-Natur von "oben" für mich zum Klicken gebracht und jetzt verstehe ich es. Vielen Dank :)
Slartibartfast
1
@ojonugwaochalifu: Danke für die Erklärung. Ich habe eine kleine Frage, die Dinge, die wir hier getan haben, können wir auch durch relatives Layout tun. Warum verwenden wir dann das Rahmenlayout?
AkashPatra
3
Ja, sie machen fast dasselbe. Aber denken Sie daran, eine gute Entwurfspraxis für Ansichten besteht darin, für Ihre Layouts so wenig Verschachtelung wie möglich zu verwenden. Wenn Sie ein FrameLayout verwenden, ist die Verschachtelung, die erforderlich ist, um Ansichten aufeinander zu platzieren, geringer als bei Verwendung eines RelativeLayout.
Ojonugwa Jude Ochalifu
65

FrameLayoutist die einfachste Implementierung von ViewGroup. Untergeordnete Ansichten werden in einem Stapel gezeichnet, wobei die zuletzt hinzugefügte Ansicht oben gezeichnet wird. Normalerweise können Sie einen der nächsten Ansätze verwenden oder diese kombinieren:

  1. Fügen Sie eine einzelne Ansichtshierarchie hinzu FrameLayout
  2. Fügen Sie mehrere untergeordnete Elemente hinzu und android:layout_gravitynavigieren Sie sie

Geben Sie hier die Bildbeschreibung ein

Ein weiterer beliebter Ansatz für die Verwendung von FrameLayout:

  • als FragmentBehälter
  • als Vorfahr Ihrer Sitte ViewGroup
yoAlex5
quelle
22

Sie können das Wort frameals normalen Fotorahmen betrachten. Was machst du mit diesem Rahmen? Sie können Fotos in diesem Rahmen von einer Oberseite zur anderen platzieren. Genauso wie in können FrameLayoutwir Ansichten (jedes Layout oder Widget wie Schaltfläche, Text, Bild usw.) übereinander platzieren, da @ojonugwa Ihnen die Textansicht oben auf dem Bild anzeigt.

Asif Mushtaq
quelle
Schön, ich habe es so gesehen, iframewie ich aus der Webentwicklung komme. Danke für die einfachste Erklärung.
Tarik
19

Bist du sicher, dass du es gegoogelt hast?

Das Rahmenlayout blockiert einen Bereich auf dem Bildschirm, um ein einzelnes Element anzuzeigen. Im Allgemeinen sollte FrameLayout verwendet werden, um eine einzelne untergeordnete Ansicht zu speichern, da es schwierig sein kann, untergeordnete Ansichten so zu organisieren, dass sie auf verschiedene Bildschirmgrößen skalierbar sind, ohne dass sich die untergeordneten Elemente überlappen.

Sie können einem FrameLayout jedoch mehrere untergeordnete Elemente hinzufügen und ihre Position innerhalb des FrameLayout steuern, indem Sie jedem untergeordneten Element mithilfe des Attributs android: layout_gravity die Schwerkraft zuweisen.

Das Geheimnis von FrameLayout ist, wie es seine Kinder gestaltet. Obwohl es normalerweise so konzipiert ist, dass es einen Gegenstand enthält, stapelt es gerne ein anderes Element übereinander. Somit ist FrameLayout im Wesentlichen eine Möglichkeit, die Z-Reihenfolge der Ansichten auf dem Bildschirm zu ändern.

Dies ist sehr nützlich für einige UI-Tricks, von HUD-ähnlichen Elementen über Schiebetafeln bis hin zu komplexeren animierten Übergängen. In diesem Beitrag sehen wir für jeden ein Beispiel.

FrameLayout ist so konzipiert, dass jeweils nur ein Element angezeigt wird. Sie können mehrere Elemente in einem FrameLayout haben, aber jedes Element wird oben links auf dem Bildschirm positioniert. Überlappende Elemente werden überlappend angezeigt. Ich habe mit FrameLayout ein einfaches XML-Layout erstellt, das zeigt, wie dies funktioniert.

Metehan
quelle
7
Ja, ich habe sie gesehen. aber ich konnte nicht herausfinden, was sie sagen.
Amin Ghasemi
Sie können es als Bilderrahmen betrachten. Grundsätzlich wird das, was Sie eingeben, links auf dem Bildschirm angezeigt. learn-android-easily.com/2013/05/frame-layout-in-androis.html
Metehan
Daher sollten Sie es meistens verwenden, um ein einzelnes Element anzuzeigen.
Metehan
4

Grundsätzlich wird eine Ansicht über eine andere gelegt, zum Beispiel:

Text auf Bild aufblasen

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>
KOTIOS
quelle
1
Nein, das lineare Layout wird nacheinander platziert. Die Frames werden darüber platziert. Für ein Senario heißt es, dass sich auf den Bildern ein Raster befindet und über dem Bild eine Schaltfläche zum Abbrechen. Dort verwenden wir das Frame-Layout
KOTIOS