framelayout(matlab下载)
大家好,今天来为大家分享framelayout的一些知识点,和matlab下载的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
framelayout是什么组件
FrameLayout称为层布局,将组件显示在屏幕的左上角,后面的组件覆盖前面的组件
该布局container可以用来占有屏幕的某块区域来显示单一的对象,可以包含有多个widgets或者是container,但是所有被包含的widgets或者是container必须被固定到屏幕的左上角,并且一层覆盖一层,不能通过为一个widgets或者是container指定一个位置。Container所包含的widgets或者是container的队列是采用的堆栈的结构,最后加进来的widgets或者是container显示在最上面。所以后一个widgets或者是container将会直接覆盖在前一个widgets或者是container之上,把它们部份或全部挡住(除非后一个widgets或者是container是透明的,必须得到FrameLayout Container的允许)。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android=""
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello1"
/>
</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">我是第一层布局——————————</string>
<string name="hello1">我是第二层布局。。。。</string>
<string name="app_name">层布局</string>
</resources>
11 帧布局——FrameLayout
FrameLayout应该说是 Android常用UI布局里面最简单的一种,顾名思义,它的布局方式就是将 View一帧一帧的叠加到一起,有点类似 Photoshop里面的图层的概念。在学习 FrameLayout的过程中,你会发现基于它可以设计出很多有意思的 Android UI。那么接下来,我们来一起一探究竟。
FrameLayout是最简单且最高效的布局形式,不过 FrameLayout的使用频率相比其他的 Layout来讲要更少很多,主要是因为很多时候它只是作为一个容器来显示单个 View或者多个 View重叠的场景。
用过 Photoshop的朋友对“图层”的概念应该比较熟悉,我们可以插入很多个图层,后添加的图层会挡住先添加的图层,然后针对每个图层我们可以任意的设置它在整个图片中的位置。同样的,我们可以设置 FrameLayout内部 View所处的位置,与 RelativeLayout相似,可以设置放置在上下左右,同样也可以设置边距。如果放置了多个 View,那么他们会按照放置的顺序依次叠加,后加入 View的会挡住前面加入的 View。
在第 1小节我们提到过,FrameLayout可以设置内部 View所在的位置,那么这几个属性和 RelativeLayout一样,这里不再重复,主要介绍一下 FrameLayout特有又常用的两个属性: android:foreground和 android:foregroundGravity。
android:foreground:设置 FrameLayout的前景图像
前景图像会置于 FrameLayout内部所有 View的层级之上,直接设置图片的资源 id即可,如下:
android:foregroundGravity:设置 FrameLayout前景图片的摆放位置,设置方式与 RelativeLayout中的 View一样,如:
我们的 FrameLayout需要满足以下要求:
效果如下:
这就是 FrameLayout的基本用法。
到这里,基本上你已经掌握了 FrameLayout的用法,可能你会有所疑惑,看起来 FrameLayout也没有什么特别好的地方,似乎完全可以被 RelativeLayout替代,所以很多人在开发过程中,往往会忘记还有这么个 Layout。其实越是往后学你越会发现,FrameLayout的简单不仅仅体现在使用上,更大的优势是在于其性能。当你的屏幕上控件不太多时,比如 Android的桌面 Widget,或者 Home应用,大多都是直接采用 FrameLayout完成的布局。
事实上,还有一处是 FrameLayout用的最多的地方,也是一个非常隐蔽的地方。如果我们打开 Hierarchy Viewer或者类似的 View分析工具,我们可以看到Android的每一个页面都是在一个 FrameLayout中完成的布局,也就是无论你定义的布局有多复杂,最终都会被放到一个 FrameLayout当中显示,这也体现了 FrameLayout的强大,在今后的学习工作中,希望大家一定不要忽视了 FrameLayout,在此为大家埋下一个伏笔。
这里需要再次强调:FrameLayout是最简单,最高效的布局方式。它的布局方式很容易理解,我们通过它可以将内部的 View防止到任意的方位,如果内部有多个 View,那么按照防止顺序,后加入的View会挡住前面加入的 View。
android framelayout两布局重叠,如何让下层不响应事件
Android TouchEvent事件传递机制
你能够接收到事件说明父容器没对事件进行拦截,然后这个事件也没有被消耗掉
你两个布局的父容器是同一个,他把事件传递了给了上层的子布局肯定也传递给了下层的子布局撒;
你不想下面的控件处理这个事件
你要么在父容器拦截掉(这样这个父容器所有子控件都接收不到触摸事件了)
要么你就不要给他设置监听
要么你就把他设置为gone或者disable状态
要么你复写你的子控件触摸事件,,不要处理,直接返回false
如果下层布局是一个View推荐使用设置为disable状态 view.setEnabled(false)在需要响应的时候设置为true!
如果下层布局是一个ViewGroup,你可以复写下将事件拦截掉这样就传不下去了,如果你不会
就还是用setEnabled(false)如果光设置viewGroup不行你就把里面的子控件都调用下这个方法就好了其他的你设置下clickable为flase之类的属性试试挺简单的
关于framelayout的内容到此结束,希望对大家有所帮助。