Що робить FrameLayout?


97

Я новачок у програмуванні. Тоді я використовував графічний макет, коли читав файл xml, я побачив FrameLayout. Потім я шукав, але не міг знайти щось корисне. Що таке FrameLayout і що він робить?



12
Так, я був там, але не міг знайти щось, що було б зрозумілим.
Amin Ghasemi

Відповіді:


194

Ви використовуєте FrameLayout для складання дочірніх переглядів один на одного, а найновіша дочірня поверхня стека. У наведеному нижче прикладі TextView є найновішим, тому він автоматично розміщується поверх ImageView.

Наприклад:

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

Вихід:

введіть тут опис зображення


40
Я люблю бачити код з їхніми вихідними даними. Дуже дякую! Прихильний. Крім того, мені подобається дизайн, який ви там зробили. Просто ще дуже приємно!
Тарік

3
Дуже просте, потужне, але просте пояснення - дякую @ojonugwaochalifu!
Coder Absolute

2
Дуже гарне пояснення. Я також прочитав "Опис розробника на офіційній сторінці і думав, що фраза" зверху "означає більше вгорі екрана. Ваше пояснення зробило 3D-характер "зверху" клацанням для мене, і тепер я зрозумів. Щиро дякую :)
Slartibartfast

1
@ojonugwaochalifu: дякую за пояснення. У мене є невеликий запит, те, що ми зробили тут, ми можемо зробити також шляхом відносного розташування. Тоді, чому ми використовуємо макет кадру?
akashPatra

3
Так, вони роблять майже одне і те ж. Але пам’ятайте, хороша практика дизайну для переглядів - використовувати якнайменше вкладеності для своїх макетів. Коли ви використовуєте FrameLayout, вкладеність, необхідна для розміщення подань один на одного, менша, ніж коли ви використовуєте RelativeLayout.
Ojonugwa Jude Ochalifu,

75

FrameLayout- найпростіша реалізація ViewGroup. Дитячі види малюються у стосі, де вгорі малюється останній доданий вигляд. Зазвичай ви можете використовувати один із наступних підходів або комбінувати їх:

  1. Додайте єдину ієрархію подання в FrameLayout
  2. Додайте декількох дітей і використовуйте android:layout_gravityдля навігації ними

введіть тут опис зображення

Інші популярні підходи використання FrameLayout:

  • як Fragmentконтейнер
  • як родоначальник вашого звичаю ViewGroup

23

Ви можете розглядати це слово frameяк звичайну фоторамку. Що ви робите з цим кадром? Ви можете розміщувати фотографії в цьому кадрі одним верхом до іншого. Так само, як і в тому, що FrameLayoutми можемо розміщувати подання (будь-який макет або віджет, як кнопка, текст, зображення тощо) поверх інших, як @ojonugwa, показує верхню частину зображення в текстовому вигляді.


Приємно, я думав про це як про те iframe, що я приходжу від веб-розробки. Дякую за найпростіше пояснення.
Тарік

19

Ви впевнені, що погуглили?

Макет кадру призначений для блокування області на екрані для відображення окремого елемента. Як правило, FrameLayout слід використовувати для утримання єдиного дочірнього подання, оскільки може бути важко організувати дочірні подання таким чином, що масштабовано до різних розмірів екрану, без того, щоб діти перекривали один одного.

Однак ви можете додати декілька дочірніх елементів до FrameLayout і контролювати їх положення в FrameLayout, призначаючи кожній дочірній силі тяжіння, використовуючи атрибут android: layout_gravity.

Секрет FrameLayout полягає в тому, як він розміщує своїх дітей. Хоча, як правило, він містить один предмет, він з радістю складає інші елементи один на одного. Таким чином, FrameLayout є по суті способом маніпулювати Z-порядком переглядів на екрані.

Це надзвичайно корисно для декількох прийомів інтерфейсу від елементів, схожих на HUD, до розсувних панелей до більш складних анімованих переходів. У цій публікації ми побачимо приклад для кожного з них.

FrameLayout призначений для відображення окремих елементів за раз. Ви можете мати декілька елементів у FrameLayout, але кожен елемент буде розміщений в лівому верхньому куті екрана. Елементи, що перекриваються, відображатимуться, що перекриваються. Я створив простий XML-макет за допомогою FrameLayout, який показує, як це працює.


8
так, я їх бачив. але я не міг з'ясувати, що вони говорять.
Amin Ghasemi

Ви можете уявити це як рамку для картини. В основному те, що ви ставите, буде вирівняно зліва від екрана. learn-android-easily.com/2013/05/frame-layout-in-androis.html
Метехан

Отже, ви повинні використовувати його для відображення окремого елемента протягом більшої частини часу.
Метехан

4

В основному це ставить одне представлення поверх іншого, наприклад:

Надування тексту на зображенні

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>

1
немає, лінійна розкладка розміщується одна за одною ... місця кадру поверх неї .. скажемо для сенаріо, як на сітці зображень, а на цьому зображенні є кнопка скасування ..... там ми використовуємо макет кадру
KOTIOS
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.