View——将Button改成ImageButton增大点击区域
实际开发的过程中,遇到测试人员提的这样的一个bug:”下载管理中下载状态按钮响应区域过小,有时点击无响应“
Bug背景是这样的:项目中有一个下载模块,下载UI界面如下:
最开始的布局文件如下:
......
<Button
android:id="@+id/downloadControl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:layout_marginRight="0dp"
android:background="@drawable/download_controlbtn_selector"
android:tag="开始"
android:textColor="#ffffff"
android:textSize="11.0sp" />
......
网上查阅相关资料后,将布局改成了:
......
<ImageButton
android:id="@+id/downloadControl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:paddingLeft="10dip"
android:layout_marginRight="0dp"
android:src="@drawable/download_controlbtn_selector"
android:background="@null"
android:tag="开始"
android:textColor="#ffffff"
android:textSize="11.0sp" />
....
就解决了问题。
这是因为:
视觉的切图是一个圆的小button图片,在实际开发的时候如果直接用button,然后把background设置为小图片,可能导致按钮的可点击区域太小,但是又不想去重写一个button,那么可以试一下以下的办法
设置一个ImageButton的属性:
<ImageButton android:layout_width="37dp" android:layout_height="34dp" android:background="@null" android:src="@drawable/background"/>
src与background区别就是把图片设置为background就会拉伸图片填充整个view,而src只显示原图片的大小,还可以通过设置android:scaletype来设置src图片的显示格式。
这样按钮的可点击区域就扩大到37*34dp,而background图片则在该区域中居中显示。
另参见另一篇博文。如下:
遭遇问题:在布局文件xml中定义了一个ImageButton,因为图标尺寸很小导致很难有效点击。
具体代码如下所示:
其点击区域如下图所示(蓝色边框选中区域):
因为可点击区域太小,导致很难点击到Button,体验非常不好。但是又不想扩大切片,也不想增加Java代码,如何做?
解决方案:具体代码如下
修改后效果图如下:
结果:可准确并及时响应点击行为。达到目标。:)
资料内容提要:Android4.0规定的有效可触摸的UI元素标准是48dp,一般来说,48dp转化为一个物理尺寸,约为9毫米。建议的目标大小为7~10毫米,这一点与iPhone一致,这是一个用户手指能准确并且舒适触摸的区域。
如图所示,你的UI元素可能小于48dp,图标仅有32dp,按钮仅有40dp,但是他们的实际可操作焦点都达到了48dp的大小。
结论:如果仅仅是图片类型的按钮(不涉及到文字时)最后使用ImageButton而不要使用Button。