框架布局是做啥的?

Posted

技术标签:

【中文标题】框架布局是做啥的?【英文标题】:What does FrameLayout do?框架布局是做什么的? 【发布时间】:2014-10-30 00:33:10 【问题描述】:

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

【问题讨论】:

你来过这里吗? developer.android.com/reference/android/widget/FrameLayout.html 是的,我去过那里,但我找不到可以理解的东西。 【参考方案1】:

您使用 FrameLayout 将子视图堆叠在一起,最新的子视图位于堆栈顶部。在下面的示例中,TextView 是最新的,因此它会自动放置在 ImageView 之上。

例如:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical">

    <ImageView
        android:id="@+id/backgroundImage"
        android:layout_
        android:layout_
        android:scaleType="centerCrop"
        android:src="@drawable/bitmapie" />

    <TextView
        android:id="@+id/descTextView"
        android:layout_
        android:layout_
        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>

输出:

【讨论】:

我喜欢看到带有输出的代码。非常感谢!赞成。另外,我喜欢你在那里做的设计。简单但非常好! 非常简单,功能强大且易于解释 - 感谢@ojonugwaochalifu! 很好的解释。我也在官方页面上阅读了“开发者”的描述,并认为“在顶部”这个短语意味着更多的屏幕顶部。您的解释为我提供了“顶部”点击的 3D 特性,现在我明白了。非常感谢:) @ojonugwaochalifu:感谢您的解释。我有一个小疑问,我们在这里所做的事情,我们也可以通过相对布局来完成。那么,我们为什么要使用框架布局呢? 是的,它们做的事情几乎一样。但是请记住,一个好的视图设计实践是在布局中使用尽可能少的嵌套。使用 FrameLayout 时,将视图相互放置所需的嵌套少于使用 RelativeLayout 时。【参考方案2】:

FrameLayoutViewGroup 的最简单实现。子视图绘制在堆栈中,最新添加的视图绘制在顶部。通常您可以使用以下方法之一或将它们结合起来:

    将单个视图层次结构添加到FrameLayout 添加多个孩子并使用android:layout_gravity 导航它们

另一种流行的使用FrameLayout的方法:

作为Fragment 容器 作为您自定义ViewGroup的祖先

【讨论】:

【参考方案3】:

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

【讨论】:

很好,我认为它是iframe,因为我来自网络开发。感谢您提供最简单的解释。【参考方案4】:

你确定你用谷歌搜索过吗?

http://www.tutorialspoint.com/android/android_frame_layout.htm

框架布局旨在阻止屏幕上的一个区域以显示单个项目。通常,应该使用 FrameLayout 来保存单个子视图,因为很难以一种可缩放到不同屏幕尺寸而又不相互重叠的方式来组织子视图。

但是,您可以向 FrameLayout 和控件添加多个子项 它们在 FrameLayout 中的位置通过将重力分配给每个 孩子,使用 android:layout_gravity 属性。

http://blog.neteril.org/blog/2013/10/10/framelayout-your-best-ui-friend/

FrameLayout 的秘密在于它如何布局其子级。虽然通常设计包含一个 item,它会愉快地将其他元素堆叠在一起。 因此 FrameLayout 本质上是一种操纵 Z 顺序的方法 屏幕上的视图。

这对于来自类似 HUD 的元素的一些 UI 技巧非常有用 滑动面板到更复杂的动画过渡。在这篇文章中 我们将看到一个例子。

http://www.learn-android-easily.com/2013/05/frame-layout-in-androis.html

FrameLayout 旨在一次显示一个项目。你可以 FrameLayout 中有多个元素,但每个元素都是 基于屏幕的左上角定位。重叠的元素 将重叠显示。我创建了一个简单的 XML 布局 使用 FrameLayout 来展示它是如何工作的。

【讨论】:

是的,我看到了。但我不知道他们在说什么。 你可以把它想象成一个相框。基本上,您放置的内容将排列在屏幕的左侧。 learn-android-easily.com/2013/05/frame-layout-in-androis.html 所以大多数时候你应该使用它来显示单个项目。【参考方案5】:

例如,基本上它会将一个视图放在另一个视图之上:

图片上的文字膨胀

  <FrameLayout>

<ImageView>
<Textview>

  </FrameLayout>

【讨论】:

nope linearlayout 一个接一个地放置......框架放置在它的顶部......让我们说一个场景,比如图像上有网格并且该图像顶部有取消按钮...... .那里我们使用框架布局

以上是关于框架布局是做啥的?的主要内容,如果未能解决你的问题,请参考以下文章

网页三剑客是哪几个软件?分别是做啥的?

spring是做啥的?怎么用?

web前端开发主要是做啥的

spring是做啥的?怎么用?

AFNetworking 中的 registerHTTPOperationClass 实际上是做啥的? [关闭]

NSLog 实际上是做啥的?