`

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

  具体代码如下所示:

     

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

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

                    

       因为可点击区域太小,导致很难点击到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"/>

     修改后效果图如下:

                   

 

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

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

       

 

 

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

分享到:
评论

相关推荐

    安卓Android源码——ImageButton.rar

    - `TouchDelegate`: 为了处理大图标的点击区域,`ImageButton` 可能会使用 `TouchDelegate` 来扩大可点击区域,确保用户点击图像边缘也能触发点击事件。 5. **性能优化** - 使用 `Drawable` 对象缓存:`...

    安卓Android源码——(ImageButton图片按钮).rar

    这个压缩包文件"安卓Android源码——(ImageButton图片按钮).rar"很可能是包含了一个示例项目,展示了如何在Android应用中使用`ImageButton`来实现图片按钮的功能。下面我们将深入探讨`ImageButton`的相关知识点。 1...

    Android2.2 API 中文文档系列(7) —— ImageButton

    ### Android2.2 API中文文档系列(7)—— ImageButton #### 概述 在本篇文档中,我们将深入了解`ImageButton`这一控件的基本特性和高级用法。`ImageButton`是`ImageView`的一个子类,继承了`ImageView`的所有功能...

    安卓Android源码——(ImageButton图片按钮).zip

    在安卓开发中,`ImageButton` 是一个非常常用的控件,它继承自 `ImageView`,并且增加了点击事件的支持,使得我们可以在按钮上展示图像,并通过点击执行相应的操作。本压缩包包含的是关于 `ImageButton` 在 Android ...

    ImageButton来回切换图片

    在Android开发中,`ImageButton`是一个非常常用的控件,它继承自`Button`,但主要用来显示图像,常用于实现点击按钮时改变图像的效果,比如开关按钮、选择按钮等。本教程将深入探讨如何在`ImageButton`中实现图片的...

    android imagebutton点击变化 源码

    在Android开发中,`ImageButton`是一个非常常用的控件,它结合了`ImageView`的功能和`Button`的交互性,允许用户通过点击来触发相应的事件。本篇将深入探讨`ImageButton`在点击时如何实现图像的变化,并通过源码解析...

    好的-Android2.2 API中文文档——ImageButton.doc

    Android2.2 API中文文档——ImageButton.doc

    Android ImageButton的使用 及长按Button的实现

    本篇将详细讲解`ImageButton`的使用方法以及如何实现长按`Button`的功能。 ### 1. Android ImageButton的基本使用 `ImageButton`主要用于展示图标,并且可以响应用户的点击操作。在布局文件中,我们可以这样声明一...

    Android 单击选中的ImageButton[]图像数组用法示例.rar

     imageButtons[0] = (ImageButton) this.findViewById(R.id.button01);//得到button01的引用  imageButtons[1] = (ImageButton) this.findViewById(R.id.button02);//得到button02的引用  imageButtons[2] = ...

    Android中ImageButton的常用方法一览.pdf

    - **setOnClickListener(View.OnClickListener l)**:这个方法来自`View`类,用于为`ImageButton`添加点击事件监听器。你需要提供一个实现了`OnClickListener`接口的匿名内部类,其中包含`onClick(View v)`方法,...

    andoid点击按钮(ImageButton)时改变按钮的背景图片 SelectorDemo

    在本教程中,我们将探讨如何在用户点击`ImageButton`时动态改变其背景图片,这个功能可以通过使用`Selector`来实现。`Selector`是Android中的一个强大的工具,它可以根据组件的状态来改变其外观。 首先,我们需要...

    Android中ImageButton的用法

    在Android开发中,`ImageButton`是一个非常重要的视图组件,它是`Button`的子类,但与普通`Button`的区别在于它可以显示图像,这使得它成为创建图标化操作按钮的理想选择。`ImageButton`的设计旨在提供一种更加直观...

    Imagebutton

    在Android的布局文件中,我们通常使用`&lt;ImageButton&gt;`标签来定义它,它是`Button`类的一个子类,继承了`View`和`OnClickListener`等特性。 ### 1. 图像按钮的基本用法 在XML布局文件中,我们可以这样创建一个`...

    android ImageButton的使用

    在Android开发中,`ImageButton`是一个非常常用的组件,它继承自`ImageView`,但与普通的`ImageView`不同,`ImageButton`允许用户点击,因此常用于实现具有交互功能的按钮。本篇文章将深入探讨`ImageButton`的使用,...

    Android4.0开发学习之ImageButton

    本篇将深入探讨在Android 4.0(API Level 14)环境下如何使用`ImageButton`,通过实际的代码实例帮助理解其工作原理和应用场景。 首先,`ImageButton`的基本用法与`ImageView`相似,都是通过设置`android:src`属性...

    android 按钮也能随点击变换 ImageButton选择特效

    在Android开发中,按钮(Button)和图像按钮(ImageButton)是两种常见的用户交互元素,用于接收用户的点击事件并触发相应的操作。本篇文章将详细讲解如何为Android的ImageButton添加点击时的变换特效,使得用户交互...

    android下imagebutton换图片

    在Android开发中,`ImageButton` 是一个非常常用的控件,它继承自 `Button`,但主要用来显示图像,而非文字。在许多应用界面设计中,我们经常需要为 `ImageButton` 设置不同的图片以实现不同的功能状态,例如:按下...

    C#自定义控件ImageButton

    本话题将深入探讨如何在C#中创建一个自定义控件——ImageButton,以及如何实现鼠标按下后显示不同图片的功能。 首先,我们来理解什么是自定义控件。自定义控件是通过继承已存在的Windows Forms或WPF控件,并在其...

    Android开发教你使用ImageButton系统图标

    在Android开发中,`ImageButton`是一个非常常用的组件,它继承自`ImageView`,但增加了点击事件的支持,使得用户可以通过点击图像来执行相应的操作。本文将详细介绍如何在Android应用中正确地使用`ImageButton`并...

    ImageButton图片按钮

    本文将深入探讨`ImageButton`的基本概念、使用方法、属性设置以及实际应用场景,帮助开发者更好地理解和运用这个控件。 ### 一、基本概念 `ImageButton`是一个专门用于显示图像,并可以响应用户点击事件的视图。与...

Global site tag (gtag.js) - Google Analytics