Co robi FrameLayout?

101

Jestem nowy w programowaniu. Używałem układu graficznego, kiedy czytałem plik xml, zobaczyłem FrameLayout. Potem szukałem, ale nie mogłem znaleźć czegoś przydatnego. Co to jest FrameLayout i do czego służy?

Amin Ghasemi
źródło
14
Tak, byłem tam, ale nie mogłem znaleźć czegoś, co byłoby zrozumiałe.
Amin Ghasemi,

Odpowiedzi:

199

Używasz FrameLayout do układania widoków podrzędnych jeden na drugim, z najnowszym dzieckiem na wierzchu stosu. W poniższym przykładzie TextView jest najnowszym, więc jest automatycznie umieszczany na górze ImageView.

Na przykład:

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

Wynik:

wprowadź opis obrazu tutaj

Ojonugwa Jude Ochalifu
źródło
42
Uwielbiam widzieć kod z ich wyjściem. Wielkie dzięki! Głosowano za. Podoba mi się również projekt, który tam stworzyłeś. Po prostu bardzo ładne!
Tarik
3
Bardzo proste, mocne, ale łatwe wyjaśnienie - dzięki @ojonugwaochalifu!
Coder Absolute
2
Bardzo dobre wyjaśnienie. Ja również przeczytałem opis dewelopera na oficjalnej stronie i pomyślałem, że wyrażenie „na górze” znaczyło więcej w górnej części ekranu. Twoje wyjaśnienie sprawiło, że trójwymiarowy charakter „na górze” kliknął i teraz rozumiem. Dziękuję bardzo :)
Slartibartfast
1
@ojonugwaochalifu: dzięki za wyjaśnienie. Mam małe pytanie, rzeczy, które tutaj zrobiliśmy, możemy również zrobić za pomocą układu względnego. Dlaczego więc używamy układu ramek?
akashPatra
3
Tak, robią prawie to samo, ale pamiętaj, że dobrą praktyką projektową dla widoków jest stosowanie jak najmniejszego zagnieżdżenia w układach. Gdy używasz FrameLayout, zagnieżdżanie wymagane do umieszczania widoków na sobie jest mniejsze niż w przypadku używania RelativeLayout.
Ojonugwa Jude Ochalifu
77

FrameLayoutto najprostsza implementacja ViewGroup. Widoki podrzędne są rysowane na stosie, gdzie ostatnio dodany widok jest rysowany na górze. Zwykle możesz użyć jednego z następnych podejść lub połączyć je:

  1. Dodaj pojedynczą hierarchię widoków do programu FrameLayout
  2. Dodaj wiele dzieci i użyj, android:layout_gravityaby się po nich poruszać

wprowadź opis obrazu tutaj

Inne popularne metody użycia FrameLayout:

  • jako Fragmentpojemnik
  • jako przodek twojego zwyczaju ViewGroup
yoAlex5
źródło
23

Możesz uznać to słowo frameza zwykłą ramkę do zdjęć. Co robisz z tą ramą? możesz umieszczać zdjęcia w tej ramce jeden na drugim. Tak samo jak w FrameLayout, możemy umieszczać widoki (dowolny układ lub widżet, taki jak przycisk, tekst, obraz itd.) Nad innymi, ponieważ @ojonugwa pokazuje widok tekstu na górze obrazu.

Asif Mushtaq
źródło
Fajnie, myślałem o tym jako o iframepochodzeniu z tworzenia stron internetowych. Dzięki za najprostsze wyjaśnienie.
Tarik
19

Czy na pewno wyszukałeś go w Google?

Układ ramki służy do blokowania obszaru na ekranie w celu wyświetlenia pojedynczego elementu. Ogólnie rzecz biorąc, FrameLayout powinien być używany do przechowywania pojedynczego widoku podrzędnego, ponieważ organizowanie widoków podrzędnych w sposób skalowalny do różnych rozmiarów ekranu bez nakładania elementów podrzędnych na siebie może być trudne.

Możesz jednak dodać wiele elementów podrzędnych do FrameLayout i kontrolować ich położenie w FrameLayout, przypisując grawitację każdemu elementowi podrzędnemu za pomocą atrybutu android: layout_gravity.

Sekretem FrameLayout jest sposób, w jaki układa swoje elementy podrzędne. Chociaż normalnie jest zaprojektowany tak, aby zawierał jeden przedmiot, z radością układa inne elementy jeden na drugim. Dlatego FrameLayout jest zasadniczo sposobem manipulowania kolejnością widoków Z na ekranie.

Jest to bardzo przydatne w przypadku kilku sztuczek interfejsu użytkownika, od elementów przypominających interfejs HUD, przez przesuwane panele, po bardziej złożone animowane przejścia. W tym poście zobaczymy przykład dla każdego z nich.

FrameLayout jest przeznaczony do wyświetlania jednego elementu naraz. Możesz mieć wiele elementów w FrameLayout, ale każdy element zostanie umieszczony w oparciu o lewy górny róg ekranu. Elementy, które się nakładają, będą się nakładać. Stworzyłem prosty układ XML przy użyciu FrameLayout, który pokazuje, jak to działa.

Metehan
źródło
8
tak, widziałem ich. ale nie mogłem się dowiedzieć, co mówią.
Amin Ghasemi,
Możesz myśleć o tym jak o ramie obrazu. Zasadniczo to, co umieścisz, zostanie wyrównane do lewej strony ekranu. learn-android-easily.com/2013/05/frame-layout-in-androis.html
Metehan
Dlatego powinieneś go używać do wyświetlania pojedynczego elementu przez większość czasu.
Metehan,
5

Zasadniczo umieszcza jeden widok na drugim, na przykład:

Nadmuchiwanie tekstu na obrazie

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>
KOTIOS
źródło
1
nie, układ liniowy umieszcza jedno po drugim ... umieszcza ramki na wierzchu ... mówi się o senario, tak jak na obrazach jest siatka, a na górze jest przycisk anulowania ..... tam używamy układu ramek
KOTIOS