FrameLayoutは何をしますか?


97

私はプログラミングに不慣れです。グラフィックレイアウトを使用していたとき、xmlファイルを読んでいたときにFrameLayoutを見ました。それから検索しましたが、役に立つものが見つかりませんでした。FrameLayoutとは何ですか?それは何をしますか?



12
はい、私はそこにいましたが、理解できるsthを見つけることができませんでした。
アミンガセミ2014

回答:


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>

出力:

ここに画像の説明を入力してください


40
私はそれらの出力でコードを見るのが大好きです。どうもありがとう!賛成。また、そこで作ったデザインも気に入っています。シンプルでありながらとても素敵です!
タリック2017

3
非常にシンプルで強力でありながら簡単な説明-@ ojonugwaochalifuに感謝します!
Coder Absolute

2
非常に良い説明。私も公式ページの「開発者」の説明を読み、「上に」というフレーズは画面の上部に向かっていることを意味すると思いました。あなたの説明は私にとって「上」クリックの3Dの性質を作りました、そして今私はそれを手に入れました。どうもありがとうございました:)
Slartibartfast 2018

1
@ojonugwaochalifu:説明ありがとうございます。小さなクエリがあります。ここで行ったことは、相対レイアウトでも実行できます。では、なぜフレームレイアウトを使用するのでしょうか。
akashPatra 2018年

3
はい、ほぼ同じことを行いますが、ビューの設計方法としては、レイアウトのネストをできるだけ少なくすることをお勧めします。FrameLayoutを使用する場合、ビューを相互に配置するために必要なネストは、RelativeLayoutを使用する場合よりも少なくなります。
Ojonugwa Jude Ochalifu 2018年

75

FrameLayoutの最も単純な実装ですViewGroup。子ビューはスタックに描画され、最後に追加されたビューが一番上に描画されます。通常、次のアプローチの1つを使用するか、それらを組み合わせることができます。

  1. 単一のビュー階層をに追加します FrameLayout
  2. 複数の子を追加し、android:layout_gravityそれらをナビゲートするために使用します

ここに画像の説明を入力してください

使用の別の一般的なアプローチFrameLayout

  • Fragmentコンテナとして
  • あなたの習慣の祖先として ViewGroup

23

あなたはその言葉frameを通常のフォトフレームと見なすことができます。そのフレームで何をしますか?そのフレームに写真を上から上に配置できます。同じのようにFrameLayout、私たちのように他のビュー(任意のレイアウト、またはウィジェットボタン、テキストのように、画像など)のトップを配置することができ@ojonugwaショーあなたのイメージのTextViewのトップ。


いいですね、私はそれをiframeWeb開発から来ているのと同じように考えていました。最も簡単な説明をありがとう。
タリック2017

19

あなたはそれをググったと確信していますか?

フレームレイアウトは、画面上の領域をブロックして単一のアイテムを表示するように設計されています。通常、FrameLayoutは、単一の子ビューを保持するために使用する必要があります。これは、子が互いにオーバーラップしない限り、さまざまな画面サイズにスケーラブルな方法で子ビューを整理することが難しい場合があるためです。

ただし、android:layout_gravity属性を使用して各子に重力を割り当てることにより、FrameLayoutに複数の子を追加し、FrameLayout内のそれらの位置を制御することができます。

FrameLayoutの秘密は、子をどのようにレイアウトするかです。通常は1つのアイテムを含むように設計されていますが、他の要素を積み重ねることができます。したがって、FrameLayoutは基本的に、画面上のビューのZオーダーを操作する方法です。

これは、HUDのような要素から、スライドパネル、より複雑なアニメーショントランジションまで、いくつかのUIトリックに非常に役立ちます。この投稿では、それぞれの例を示します。

FrameLayoutは、一度に1つのアイテムを表示するように設計されています。FrameLayout内に複数の要素を含めることができますが、各要素は画面の左上に基づいて配置されます。重なっている要素は重なって表示されます。これがどのように機能するかを示すFrameLayoutを使用して単純なXMLレイアウトを作成しました。


8
はい、私はそれらを見ました。しかし、私は彼らが何を言っているのかわかりませんでした。
アミンガセミ2014

額縁と考えることができます。基本的に、入力したものは画面の左側に配置されます。learn-android-easily.com/2013/05/frame-layout-in-androis.html
Metehan

したがって、ほとんどの場合、単一のアイテムを表示するために使用する必要があります。
メテハン2014

4

基本的に、たとえば、あるビューを別のビューの上に配置します。

画像上のテキストを膨らませる

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>

1
いいえ、linearlayoutは次々に配置されます...フレームはその上に配置されます..画像にグリッドがあり、その画像の上にキャンセルボタンがあるようなシナリオを考えてみましょう.....フレームレイアウトを使用します
KOTIOS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.