Apa yang dilakukan FrameLayout?

97

Saya baru mengenal pemrograman. Saya menggunakan Graphical Layout lalu ketika saya membaca file xml, saya melihat FrameLayout. Kemudian saya mencari, tetapi saya tidak dapat menemukan sesuatu yang berguna. Apa itu FrameLayout dan apa fungsinya?

Amin Ghasemi
sumber
1
Apa kamu pernah lewat sini? developer.android.com/reference/android/widget/FrameLayout.html
Ed_Fernando
12
Ya, saya pernah ke sana tetapi saya tidak dapat menemukan hal yang bisa dimengerti.
Amin Ghasemi

Jawaban:

196

Anda menggunakan FrameLayout untuk menumpuk tampilan anak di atas satu sama lain, dengan anak terbaru di atas tumpukan. Dalam contoh di bawah ini, TextView adalah yang terbaru, jadi secara otomatis ditempatkan di atas ImageView.

Sebagai contoh:

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

Keluaran:

masukkan deskripsi gambar di sini

Ojonugwa Jude Ochalifu
sumber
41
Saya suka melihat kode dengan keluarannya. Terima kasih banyak! Suara positif. Juga, saya suka desain yang Anda buat di sana. Cukup namun sangat bagus!
Tarik
3
Penjelasan yang sangat sederhana, kuat, namun mudah - terima kasih @ojonugwaochalifu!
Coder Absolute
2
Penjelasan yang sangat bagus. Saya juga membaca 'Deskripsi pengembang di halaman resmi dan berpikir bahwa frasa "di atas" lebih berarti di bagian atas layar. Penjelasan Anda membuat sifat 3D "di atas" klik untuk saya dan sekarang saya mengerti. Terima kasih banyak :)
Slartibartfast
1
@ojonugwaochalifu: terima kasih penjelasannya. Saya memiliki pertanyaan kecil, hal-hal yang telah kami lakukan di sini, kami juga dapat melakukannya dengan tata letak relatif. Lalu, mengapa kita menggunakan tata letak bingkai?
akashPatra
3
Ya, mereka melakukan hal yang hampir sama. Tapi ingat, praktik desain yang baik untuk tampilan adalah menggunakan sesedikit mungkin penumpukan untuk tata letak Anda. Saat Anda menggunakan FrameLayout, penumpukan yang diperlukan untuk menempatkan tampilan satu sama lain lebih sedikit daripada saat Anda menggunakan RelativeLayout.
Ojonugwa Jude Ochalifu
75

FrameLayoutadalah implementasi yang paling sederhana dari ViewGroup. Tampilan anak digambar berada dalam tumpukan, di mana tampilan tambahan terbaru digambar di bagian atas. Biasanya Anda dapat menggunakan salah satu pendekatan berikutnya atau menggabungkannya:

  1. Tambahkan hierarki tampilan tunggal ke dalam FrameLayout
  2. Tambahkan beberapa anak dan gunakan android:layout_gravityuntuk menavigasi mereka

masukkan deskripsi gambar di sini

Pendekatan populer lainnya untuk menggunakan FrameLayout:

  • sebagai Fragmentwadah
  • sebagai leluhur adat Anda ViewGroup
yoAlex5
sumber
23

Anda bisa menganggap kata itu framesebagai bingkai foto biasa. Apa yang Anda lakukan dengan bingkai itu? Anda dapat menempatkan foto dalam bingkai itu satu per satu. Sama seperti di FrameLayoutkita dapat menempatkan tampilan (Tata letak apa pun, atau widget seperti tombol, teks, gambar, dll.) Di atas lainnya seperti @ojonugwa menunjukkan kepada Anda textview atas Gambar.

Asif Mushtaq
sumber
Bagus, saya menganggapnya iframesebagai saya berasal dari pengembangan web. Terima kasih untuk penjelasan yang paling sederhana.
Tarik
19

Apakah Anda yakin sudah mencarinya di Google?

Frame Layout dirancang untuk memblokir suatu area di layar untuk menampilkan satu item. Umumnya, FrameLayout harus digunakan untuk menampung satu tampilan anak, karena mungkin sulit untuk mengatur tampilan anak dengan cara yang dapat diskalakan ke berbagai ukuran layar tanpa anak-anak tersebut saling tumpang tindih.

Namun, Anda bisa menambahkan beberapa turunan ke FrameLayout dan mengontrol posisinya di dalam FrameLayout dengan menetapkan gravitasi ke setiap turunan, menggunakan atribut android: layout_gravity.

Rahasia FrameLayout adalah bagaimana ia mengatur tata letak anak-anaknya. Meskipun biasanya dirancang untuk memuat satu item, itu dengan senang hati akan menumpuk elemen lain di atas satu sama lain. Jadi FrameLayout pada dasarnya adalah cara untuk memanipulasi urutan-Z tampilan di layar.

Ini sangat berguna untuk beberapa trik UI dari elemen mirip HUD hingga panel geser ke transisi animasi yang lebih kompleks. Dalam posting ini kita akan melihat contoh untuk masing-masingnya.

FrameLayout dirancang untuk menampilkan satu item dalam satu waktu. Anda dapat memiliki beberapa elemen dalam FrameLayout tetapi setiap elemen akan diposisikan berdasarkan kiri atas layar. Elemen yang tumpang tindih akan ditampilkan tumpang tindih. Saya telah membuat layout XML sederhana menggunakan FrameLayout yang menunjukkan cara kerjanya.

Metehan
sumber
8
ya saya melihat mereka. tapi saya tidak tahu apa yang mereka katakan.
Amin Ghasemi
Anda bisa menganggapnya sebagai bingkai foto. Pada dasarnya apa yang Anda taruh akan ditempatkan di kiri layar. learn-android-easily.com/2013/05/frame-layout-in-androis.html
Metehan
Jadi, Anda harus menggunakannya untuk menampilkan satu item di sebagian besar waktu.
Metehan
4

Pada dasarnya ini menempatkan satu tampilan di atas yang lain misalnya:

Mengembang teks pada Gambar

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>
KOTIOS
sumber
1
nope linearlayout menempatkan satu demi satu ... tempat bingkai di atasnya..misalnya untuk senario seperti ada kisi pada gambar dan ada tombol batal di atas gambar itu ..... di sana kami menggunakan tata letak bingkai
KOTIOS