android framelayout两布局重叠,如何让下层不响应事件
设置上层布局的属性 android:clickable="true"就行了。
textview的宽度不能设置成wrap_content,设置成fill_parent或者match_parent。然后textview.setGravity(Gravity.RIGHT)。
就是重写一个framelayout ,然后在它的onlayout方法中将两个linearlayout横着放。
RelativeLayout
第一类:属性值为true可false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentlfMissing
2018-06-06
设置clickable为true
<FrameLayout
android:clickable="true"
android:id="@+id/flHomebottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="horizontal">
Android TouchEvent事件传递机制
你能够接收到事件 说明父容器没对事件进行拦截,然后这个事件也没有被消耗掉
你两个布局的父容器是同一个,他把事件传递了给了上层的子布局 肯定也传递给了下层的子布局撒;
你不想下面的控件处理这个事件
你要么在父容器拦截掉(这样这个父容器所有子控件都接收不到触摸事件了)
要么你就不要给他设置监听
要么你就把他设置为gone或者disable状态
要么你复写你的子控件触摸事件,,不要处理,直接返回false
如果下层布局是一个View 推荐使用设置为disable状态 view.setEnabled(false) 在需要响应的时候设置为true!
如果下层布局是一个ViewGroup,你可以复写下 将事件拦截掉 这样就传不下去了,如果你不会
就还是用setEnabled(false) 如果光设置viewGroup不行你就把里面的子控件都调用下这个方法就好了 其他的你设置下clickable为flase之类的属性试试 挺简单的