View——将Button改成ImageButton增大点击区域

        实际开发的过程中,遇到测试人员提的这样的一个bug:”下载管理中下载状态按钮响应区域过小,有时点击无响应“

       Bug背景是这样的:项目中有一个下载模块,下载UI界面如下:

View——将Button改成ImageButton增大点击区域
 最开始的布局文件如下:

    ......

     <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,因为图标尺寸很小导致很难有效点击。

具体代码如下所示:

   

<ImageButton android:id="@+id/imageButtonAlbum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bt_album"
android:contentDescription="@null"/>

   其点击区域如下图所示(蓝色边框选中区域):

                    View——将Button改成ImageButton增大点击区域

     因为可点击区域太小,导致很难点击到Button,体验非常不好。但是又不想扩大切片,也不想增加Java代码,如何做?

解决方案:具体代码如下

             

<ImageButton android:id="@+id/imageButtonAlbum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
android:src="@drawable/bt_album"
android:background="@null"
android:contentDescription="@null"/>

   修改后效果图如下:

                   View——将Button改成ImageButton增大点击区域

结果:可准确并及时响应点击行为。达到目标。:)

资料内容提要:Android4.0规定的有效可触摸的UI元素标准是48dp,一般来说,48dp转化为一个物理尺寸,约为9毫米。建议的目标大小为7~10毫米,这一点与iPhone一致,这是一个用户手指能准确并且舒适触摸的区域。
       如图所示,你的UI元素可能小于48dp,图标仅有32dp,按钮仅有40dp,但是他们的实际可操作焦点都达到了48dp的大小。

     View——将Button改成ImageButton增大点击区域

         结论:如果仅仅是图片类型的按钮(不涉及到文字时)最后使用ImageButton而不要使用Button。