FrameLayout做什么?

Ami*_*emi 67 android android-framelayout

我是编程新手.我正在使用Graphical Layout然后当我阅读xml文件时,我看到了FrameLayout.然后我搜索了,但我找不到有用的东西.什么是FrameLayout,它有什么作用?

ojo*_*ifu 134

您使用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>
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

  • 我喜欢用输出看代码.非常感谢!Upvoted.另外,我喜欢你在那里设计的设计.简单而又非常好! (16认同)
  • 非常简单,强大而简单的解释 - 谢谢@ojonugwaochalifu! (2认同)
  • 很好的解释。我也阅读了官方页面上的“开发人员描述”,并认为“在顶部”一词的含义更接近屏幕顶部。您的解释使我对“顶部”的 3D 特性产生了点击,现在我明白了。非常感谢 :) (2认同)
  • 是的,它们几乎可以完成相同的工作。但是请记住,视图的一种良好设计实践是对布局使用尽可能少的嵌套。使用FrameLayout时,彼此放置视图所需的嵌套少于使用RelativeLayout时的嵌套。 (2认同)

yoA*_*ex5 35

FrameLayout旨在阻止屏幕上的区域显示单个项目.通常,ViewGroup应该用于保存单个子视图,因为很难以可扩展到不同屏幕大小而儿童不会相互重叠的方式组织子视图.但是,您可以使用该属性将多个子项添加到a FrameLayoutandroid:layout_gravity通过为每个子项分配重力来控制它们的位置FrameLayout.

子视图以堆栈形式绘制,最近添加的子项位于顶部.

在此输入图像描述

来源在这里 - https://medium.com/@anamikatripathi1601/android-beginners-views-layouts-657a5bbeebe2

使用Fragment它的另一种流行方法是ViewGroup容器


Asi*_*taq 20

您可以将该单词frame视为常规相框.你用那个框架做什么?你可以将照片放在那个框架中.与FrameLayout我们可以放置视图(任何布局,或按钮,文本,图像等小部件)相同的顶部,因为@ojonugwa显示了图像的textview顶部.


Met*_*han 19

你确定用Google搜索了吗?

帧布局旨在阻挡屏幕上的区域以显示单个项目.通常,FrameLayout应该用于保存单个子视图,因为很难以可扩展到不同屏幕大小而儿童不会相互重叠的方式组织子视图.

但是,您可以使用android:layout_gravity属性将多个子项添加到FrameLayout并通过为每个子项分配重力来控制它们在FrameLayout中的位置.

FrameLayout的秘诀在于它如何布置其子项.虽然通常设计为包含一个项目,但它会很乐意将其他元素叠加在一起.因此,FrameLayout本质上是一种操纵屏幕上视图的Z顺序的方法.

这对于从HUD类元素到滑动面板到更复杂的动画过渡的几个UI技巧非常有用.在这篇文章中,我们将看到每个这样的例子.

FrameLayout旨在一次显示单个项目.您可以在FrameLayout中包含多个元素,但每个元素将根据屏幕的左上角进行定位.重叠的元素将重叠显示.我使用FrameLayout创建了一个简单的XML布局,显示了它的工作原理.

  • 是的,我看到了他们.但我不知道他们在说什么. (6认同)

KOT*_*IOS 5

基本上它将一个视图置于另一个视图之上,例如:

在图像上膨胀文本

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>
Run Code Online (Sandbox Code Playgroud)