[原创]在Framelayout中放置button控件出现的覆盖问题
android Framelayout(帧布局)是很常用的布局,主要用来处理需要多个view叠加显示的情况。
然而在使用中,我发现Framelayout中的Button控件,会挡住所有其他控件,而不论位置和添加顺序如何,这个表现是不正常的,我本机有4.1和5.0两种模拟器,只有5.0有这个问题,因此怀疑是5.0的bug。
下面用一个例子说明:
想要的效果是这样的: 
我选择使用Framelayout来实现,下面一个button,上面一个imageview即可,代码如下:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="立即投资" /> <ImageView
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_gravity="left|center"
android:layout_marginLeft="16dp"
android:src="@mipmap/ic_invest_button"
android:tint="@color/white" /> </FrameLayout>
在4.1系统上,工作良好,换到5.0,左边的小图标(imageview)死活不显示,调试了半天才发现是被button的背景遮住了。
imageview是后加入的,按理来说,应该是显示在button上面,而不应该被挡住,所以觉得这应该是5.0的一个bug。
但是咱们也必须得兼容5.0,不能显示异常啊,那咱们自己来解决这个问题吧,因为本项目其他地方也用到了Framelayout,没有出现异常,只有这里异常,对比测试后发现,是button控件的问题,那假如我就用一个容器把button包裹起来,结果会怎么样呢?直接上代码:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"> <RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="立即投资" /> </RelativeLayout> <ImageView
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_gravity="left|center"
android:layout_marginLeft="16dp"
android:src="@mipmap/ic_invest_button"
android:tint="@color/white" /> </FrameLayout>
跑起来一看,问题解决了,完美兼容4.0,5.0。只是多了一层嵌套,代码上看略微不优雅。
[原创]在Framelayout中放置button控件出现的覆盖问题的更多相关文章
- listView中的button控件获取item的索引
在listview中的listitem设置事件响应,如果listitem中有button控件,这时候listitem就不会捕获到点击事件,而默认的是listitem中的button会捕获点击事件.那么 ...
- Xcode UIView 中的Button 控件的属性和基本用法
//第一种创建UIButton的方法 //initWhitFrame: UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(1 ...
- listView中的button控件获取索引
1.在listitem中初始化button的时候,给该button添加一个setTag方法,将此时的索引值传进去,然后在button的onclick事件中调用view的getTag方法,即可将list ...
- VC中动态添加控件
VC中动态添加控件 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个 ...
- MFC中动态添加控件----寻找多年的秘籍,吐血推荐
原文作者tianwaik 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立 ...
- 在Web中使用Windows控件
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 将Net控件转化为ActiveX控件 1GUID 2实现IObjectSafety接口 3程序集设定 制作安装程序 Web集 ...
- 《zw版·delphi与halcon系列原创教程》zw版_THOperatorSetX控件函数列表 v11中文增强版
<zw版·delphi与halcon系列原创教程>zw版_THOperatorSetX控件函数列表v11中文增强版 Halcon虽然庞大,光HALCONXLib_TLB.pas文件,源码就 ...
- C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变(转)
在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大小并且能重新定位?此时就要借助控件的.Anchor属性.Anchor属性定义控件的定位点位置.当控件锚定到某个 ...
- Ionic2中集成第三方控件Sweetalert
Ionic2混合开发,入坑系列:Ionic2中集成第三方控件Sweetalert 注:Sweetalert2已经可以直接从npm中下载安装 npm install --save sweetalert2 ...
随机推荐
- C#自定义工业控件开发
由于工作需要,调研过一段时间的工业控制方面的“组态软件”(SCADA)的开发,组态软件常用于自动化工业控制领域,其中包括实时数据采集.数据储存.设备控制和数据展现等功能.其中工控组件的界面展现的实现类 ...
- 【leetcode】Climbing Stairs
题目简述: You are climbing a stair case. It takes n steps to reach to the top. Each time you can either ...
- jq点击显示,再点击隐藏
每次都会遇到的问题: <script> $("button").click(function(){ if($(".div").css("d ...
- AngularJS动画
1.AngularJS提供了动画效果,可以配合CSS使用: 2.AngularJS使用动画需要引入angular-animate.min.js库 <script src="http:/ ...
- phpunit测试学习 2 分类总结断言涉及哪些方面
11:27 2015/12/9phpunit测试学习 2, 分类总结断言涉及哪些方面先推荐windows快速打开某处路径下的cmd,进入测试状态:可以在文件夹中,按住Shift+鼠标右键,这时候你就 ...
- 【BZOJ】3835: [Poi2014]Supercomputer
题意 \(n(1 \le 1000000)\)个点的有根树,\(1\)号点为根,\(q(1 \le 1000000)\)次询问,每次给一个\(k\),每一次可以选择\(k\)个未访问的点,且父亲是访问 ...
- iOS二维码生成-libqrencode编译报错
libqrencode使用 1.将libqrencode文件夹整个拖入项目文件夹中 2.在要生成二维码的页面的 .m文件头部添加 #import "QRCodeGenerator.h&quo ...
- Ubuntu 16.04 install 搜狗输入法
1.#先添加以下源 sudo add-apt-repository ppa:fcitx-team/nightly 2.#添加源之后需要更新一下系统 sudo apt-get update 3.#开始安 ...
- 一个叫vtysh的命令行shell
目前的工作就是在这个叫vtysh的工具上进行修改,终极目的是把它作为一个代替shell的东西.以此来屏蔽用户和系统之间的接触,减少用户对系统的操作权限.
- 【PostgreSQL】PostGreSQL数据库,时间数据类型
---"17:10:13.236"time without time zone:时:分:秒.毫秒 ---"17:10:13.236+08"time with t ...