先来看官方文档的定义:FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。
简单来说:FrameLayout中的子元素总是以屏幕的左上角层叠在一起。
事实上,这是不确切的,我们可以对子元素添加android:layout_gravity属性来设置他们的位置的。
比如,下面的布局子控件都在什么位置呢?
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/candle"
/>
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="#00ff00"
android:text="@string/hello"
/>
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="Start"
/>
</FrameLayout>
在FrameLayout布局里面android:layout_margin的各种属性必须依赖于android:layout_gravity,也就是说,要想margin生效,必须设定view的layout_gravity属性。
下面的配置将2个控件显示在屏幕的中间:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:layout_width="200dip"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_gravity="center"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/empty3"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="暂无记录"
android:textColor="@color/gray_dark"
android:textSize="@dimen/font_middle"
android:gravity="center"
/>
</LinearLayout>
</FrameLayout>
http://disanji.net/2011/04/22/android-ui-study-framelayou/
分享到:
相关推荐
TabWidget是显示选项卡的地方,而FrameLayout则用于动态替换和显示各个选项卡的内容。 步骤一:设置TabHost 在布局文件中,创建一个TabHost,并为其设置一个ID为"@android:id/tabhost",这是TabHost的标准ID。接着...
TabWidget是显示标签的地方,而FrameLayout用于填充每个标签页对应的内容。`layout_weight=1`设置使得内容区域占据剩余空间,确保了内容区域在屏幕上的适配。 接着,我们来看另一个布局文件`inner.xml`,这个布局与...
`TabWidget`是显示选项卡的地方,而`FrameLayout`则是用于展示每个选项卡内容的区域。创建`TabHost`界面的基本步骤如下: 1. **初始化TabHost**: 首先,你需要通过`TabHost.TabSpec`来定义每个选项卡,并添加到`...
有些红点View,需要你在布局中设置,要是很多地方有设置红点操作,则比较麻烦。而该案例不需要改变你之前的任何代码,只是需要按照步骤即可设置红点。设置红点view到你的控件的逻辑操作代码如下所示。如果控件父布局...
`TabWidget` 是`TabHost`的一部分,用来显示各个标签,而`FrameLayout` 则是用来放置各个标签页内容的地方。 在实现过程中,以下几点需要注意: 1. **设置ID**:`TabHost`、`TabWidget`和`FrameLayout`都需要设置...
TabWidget是显示页签的地方,而FrameLayout(通常称为`android.R.id.tabcontent`)是用来放置每个标签对应的内容视图的。 1. **初始化TabHost** 在Activity的`onCreate()`方法中,你需要初始化TabHost并设置其ID为...
2. onDoubleTapEvent(MotionEvent e):通知DoubleTap手势中的事件,包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up...
2. onDoubleTapEvent(MotionEvent e):通知DoubleTap手势中的事件,包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up...
`TabWidget` 显示标签,而 `FrameLayout`(也称为 `android:id/tabcontent`)是用于显示与每个标签相关联的视图的地方。 在标准的`TabHost` 实现中,标签的切换通常是通过点击实现的。然而,为了实现横向拖动的效果...
2. **FrameLayout**:通常称为`content`或`android:id/tabcontent`,这是显示与每个标签关联的实际内容的地方。当用户点击一个标签时,`TabHost`会在这个区域内加载对应的视图。 下面我们将详细探讨如何使用`...
7. **注意事项**:在进行`TabActivity`的跳转和传值时,要注意内存管理,避免内存泄漏。同时,对于数据的传递,确保遵循安全性和隐私原则,不要在不安全的地方存储敏感信息。 以上就是关于`TabActivity`之间跳转和...
注意,随着Android版本的发展,TabHost逐渐被更现代的导航组件(如ViewPager和BottomNavigationView)取代,但在一些旧项目或特定需求下,TabHost仍然具有其独特的价值。在实际开发中,要根据项目需求和技术发展趋势...
1. **TabWidget**:显示Tab标签的地方。 2. **FrameLayout**:用于显示被选中的`Fragment`内容。 ### 创建`FragmentTabHost` 首先,你需要在布局文件中定义一个`FragmentTabHost`,并设置其ID为`android.R.id....
将自定义的水波View添加到项目的XML布局文件中,并在需要的地方使用它。 通过以上步骤,我们可以实现一个基本的单击水波效果。对于初学者来说,理解这个过程不仅可以帮助他们掌握Android动画的基本原理,还能提升...
- 为了定位到目标控件(比如一个ImageView),可以使用`RelativeLayout`或`FrameLayout`作为父容器,然后将BadgeView和目标控件作为子视图添加。通过设置`android:layout_alignTop`、`android:layout_alignBottom`...
7. **使用FrameBufferObject(FBO)**:在某些情况下,可以使用OpenGL ES的FBO来绘制SurfaceView的内容,然后在需要的地方绘制其他子View。这需要对OpenGL ES有深入的理解。 以上就是解决Android SurfaceView添加组件...
如果方向设为垂直,则 left 与 right 是没有效果的,这时如果想放在靠右的地方,可以使用 space 标签,将宽度设为 0dp,将 layout weight 设为 1。 Android UI 开发中所遇到的各种坑是非常重要的,需要开发者们在...
- 多线程处理:如果在主线程之外进行视图更新,确保在合适的地方调用`DispatchQueue.main.async`以保持界面流畅。 - 事件冲突:确保拖动操作不会与按钮的点击事件或其他手势冲突。 通过以上步骤,你可以在Android或...
`TabHost`将包含`TabWidget`(底部的选项卡)和`FrameLayout`(显示内容的地方)。 ```xml android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent"> ...
通过以上的讲解,你应该对如何使用SurfaceView播放视频作为背景有了深入的理解。实践是检验真理的唯一标准,所以不妨尝试一下"surfaceviewbackground-master"项目,亲手实现这个效果,加深理解。