FrameLayout은 무엇을합니까?


97

저는 프로그래밍이 처음입니다. 그래픽 레이아웃을 사용하고 있었는데 xml 파일을 읽을 때 FrameLayout을 보았습니다. 그런 다음 검색했지만 유용한 것을 찾을 수 없었습니다. FrameLayout은 무엇이며 어떤 역할을합니까?



13
예, 거기에 있었지만 이해할 수있는 sth를 찾을 수 없었습니다.
— 아민 가세

답변:


196

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>

산출:

여기에 이미지 설명 입력


42
나는 그들의 출력으로 코드를 보는 것을 좋아합니다. 감사합니다! 찬성. 또한 거기에서 만든 디자인이 마음에 듭니다. 간단하지만 아주 좋습니다!
— Tarik

3
매우 간단하고 강력하지만 쉬운 설명-감사합니다 @ojonugwaochalifu!
— Coder Absolute

2
아주 좋은 설명입니다. 나도 공식 페이지에서 '개발자 설명'을 읽고 '위에'라는 문구가 화면 상단을 더 의미한다고 생각했습니다. 당신의 설명은 나를 위해 "상단"클릭의 3D 특성을 만들었고 이제 나는 그것을 얻습니다. 대단히 :) 감사
— 슬라 티 바트 패스트

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웹 개발에서 오는 것으로 생각하고 있었다 . 가장 간단한 설명에 감사드립니다.
— Tarik

19

Google 검색을 하셨나요?

프레임 레이아웃은 단일 항목을 표시하기 위해 화면의 영역을 차단하도록 설계되었습니다. 일반적으로 FrameLayout은 자식이 서로 겹치지 않고 다른 화면 크기로 확장 가능한 방식으로 자식보기를 구성하기 어려울 수 있으므로 단일 자식보기를 유지하는 데 사용해야합니다.

그러나 여러 자식을 FrameLayout에 추가하고 android : layout_gravity 속성을 사용하여 각 자식에게 중력을 할당하여 FrameLayout 내에서 위치를 제어 할 수 있습니다.

FrameLayout의 비밀은 자식을 레이아웃하는 방법입니다. 일반적으로 하나의 항목을 포함하도록 설계되었지만 다른 요소를 서로 쌓아 올릴 것입니다. 따라서 FrameLayout은 본질적으로 화면에서 뷰의 Z 순서를 조작하는 방법입니다.

이것은 HUD와 같은 요소에서 슬라이딩 패널, 더 복잡한 애니메이션 전환에 이르기까지 몇 가지 UI 트릭에 매우 유용합니다. 이 게시물에서 우리는 각각에 대한 예제를 볼 것입니다.

FrameLayout은 한 번에 하나의 항목을 표시하도록 설계되었습니다. FrameLayout 내에 여러 요소를 가질 수 있지만 각 요소는 화면의 왼쪽 상단을 기준으로 배치됩니다. 겹치는 요소는 겹치는 것으로 표시됩니다. 이것이 어떻게 작동하는지 보여주는 FrameLayout을 사용하여 간단한 XML 레이아웃을 만들었습니다.


8
네, 봤어요. 그러나 나는 그들이 무엇을 말하는지 알 수 없었다.
— 아민 가세

액자처럼 생각할 수 있습니다. 기본적으로 입력 한 내용은 화면 왼쪽에 할당됩니다. learn-android-easily.com/2013/05/frame-layout-in-androis.html
— Metehan

따라서 대부분의 경우 단일 항목을 표시하는 데 사용해야합니다.
— Metehan 2014 년

4

기본적으로 예를 들어 하나의 뷰를 다른 뷰 위에 놓습니다.

이미지의 텍스트 부풀림

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>

1
nope linearlayout은 그 위에 프레임을 배치합니다. 그 위에 프레임이 배치됩니다. 이미지에 격자가 있고 해당 이미지 위에 취소 버튼이있는 것과 같은 시나리오를 말합니다. ..... 프레임 레이아웃을 사용합니다
— KOTIOS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.