FrameLayout ne yapar?


Yanıtlar:


196

En son alt öğe yığının en üstünde olacak şekilde alt görünümleri üst üste yığmak için bir FrameLayout kullanırsınız. Aşağıdaki örnekte, TextView en güncel olanıdır, bu nedenle otomatik olarak ImageView’un üstüne yerleştirilir.

Örneğin:

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

Çıktı:

görüntü açıklamasını buraya girin


40
Kodları çıktılarıyla görmeyi seviyorum. Çok teşekkürler! Olumlu oy verildi. Ayrıca orada yaptığınız tasarımı beğendim. Basit ama çok güzel!
Tarik

3
Çok basit, güçlü ama kolay bir açıklama - teşekkürler @ojonugwaochalifu!
Coder Absolute

2
Çok güzel bir açıklama. Ben de resmi sayfadaki 'Geliştirici açıklamasını okudum ve "üstte" ifadesinin ekranın üst kısmına doğru daha çok ifade ettiğini düşündüm. Açıklamanız benim için 3 boyutlu "üstte" tıklamayı yaptı ve şimdi anladım. Çok teşekkür ederim :)
Slartibartfast

1
@ojonugwaochalifu: açıklama için teşekkürler. Küçük bir sorgum var, burada yaptığımız şeyler, göreceli düzen ile de yapabiliriz. Öyleyse neden çerçeve düzeni kullanıyoruz?
akashPatra

3
Evet, neredeyse aynı şeyi yapıyorlar. Ancak, görünümler için iyi bir tasarım uygulamasının, mizanpajlarınız için mümkün olduğunca az yerleştirme kullanmak olduğunu unutmayın. Bir FrameLayout kullandığınızda, görünümleri birbirine yerleştirmek için gereken yuvalama, RelativeLayout kullandığınızda olduğundan daha azdır.
Ojonugwa Jude Ochalifu

75

FrameLayouten basit uygulamasıdır ViewGroup. Alt görünümler, en son eklenen görünümün en üste çizildiği bir yığın halinde çizilir. Genellikle sonraki yaklaşımlardan birini kullanabilir veya bunları birleştirebilirsiniz:

  1. İçine tek bir görünüm hiyerarşisi ekleyin FrameLayout
  2. Birden çok çocuk ekleyin ve android:layout_gravitybunlarda gezinmek için kullanın

görüntü açıklamasını buraya girin

Başka bir popüler kullanım yaklaşımı FrameLayout:

  • bir şekilde Fragment, kabın
  • geleneğinizin atası olarak ViewGroup

23

Kelimeyi framenormal fotoğraf çerçevesi olarak düşünebilirsiniz . O çerçeveyle ne yapıyorsun? fotoğrafları bu çerçeveye üst üste yerleştirebilirsiniz. Aynı olduğu gibi FrameLayoutbiz gibi diğer görüşlerini (Herhangi düzeni veya widget'ı düğme, metin gibi, görüntü vb) üst yerleştirebilirsiniz @ojonugwa gösterileri size Görüntü TextView'un üst.


Güzel, iframeweb geliştirmeden geldiğim gibi düşünüyordum . En basit açıklama için teşekkürler.
Tarik

19

Google'da aradığınızdan emin misiniz?

Çerçeve Düzeni, tek bir öğeyi görüntülemek için ekrandaki bir alanı bloke etmek üzere tasarlanmıştır. Genel olarak, FrameLayout tek bir çocuk görünümünü tutmak için kullanılmalıdır, çünkü çocuk görünümlerini, çocuklar birbiriyle örtüşmeden farklı ekran boyutlarına ölçeklenebilir bir şekilde düzenlemek zor olabilir.

Bununla birlikte, bir FrameLayout'a birden çok alt öğe ekleyebilir ve android: layout_gravity özniteliğini kullanarak her bir alt öğeye yer çekimi atayarak bunların FrameLayout içindeki konumunu kontrol edebilirsiniz.

FrameLayout'un sırrı, alt öğelerini nasıl düzenlediğidir. Normalde bir öğe içerecek şekilde tasarlanmış olsa da, diğer öğeleri mutlu bir şekilde üst üste yığacaktır. Bu nedenle FrameLayout, esasen ekrandaki görünümlerin Z sırasını değiştirmenin bir yoludur.

Bu, HUD benzeri öğelerden kayan panellere ve daha karmaşık animasyonlu geçişlere kadar birkaç UI numarası için süper kullanışlıdır. Bu yazıda bunların her biri için bir örnek göreceğiz.

FrameLayout, bir seferde tek bir öğeyi görüntülemek için tasarlanmıştır. Bir FrameLayout içinde birden fazla öğeniz olabilir, ancak her öğe ekranın sol üst köşesine göre konumlandırılacaktır. Örtüşen öğeler üst üste binerek görüntülenecektir. Bunun nasıl çalıştığını gösteren FrameLayout kullanarak basit bir XML düzeni oluşturdum.


8
evet onları gördüm. ama ne dediklerini bulamadım.
Amin Ghasemi

Bunu bir resim çerçevesi olarak düşünebilirsiniz. Temel olarak ne koyduğunuz ekranın soluna hizalanacaktır. learn-android-easily.com/2013/05/frame-layout-in-androis.html
Metehan

Bu nedenle, çoğu zaman tek bir öğeyi görüntülemek için kullanmalısınız.
Metehan

4

Temel olarak, örneğin bir görünümü diğerinin üzerine koyar:

Görseldeki metni şişirme

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>

1
hayır doğrusal düzen birbiri ardına yerleştirir ... çerçeve yerleri üste yerleştirir ... Bir senaryo için sanki görüntüler üzerinde ızgara var ve bu görüntünün üstünde iptal düğmesi var ..... burada çerçeve düzeni kullanıyoruz
KOTIOS
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.