实际开发的过程中,遇到测试人员提的这样的一个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。
相关推荐
- `TouchDelegate`: 为了处理大图标的点击区域,`ImageButton` 可能会使用 `TouchDelegate` 来扩大可点击区域,确保用户点击图像边缘也能触发点击事件。 5. **性能优化** - 使用 `Drawable` 对象缓存:`...
这个压缩包文件"安卓Android源码——(ImageButton图片按钮).rar"很可能是包含了一个示例项目,展示了如何在Android应用中使用`ImageButton`来实现图片按钮的功能。下面我们将深入探讨`ImageButton`的相关知识点。 1...
### Android2.2 API中文文档系列(7)—— ImageButton #### 概述 在本篇文档中,我们将深入了解`ImageButton`这一控件的基本特性和高级用法。`ImageButton`是`ImageView`的一个子类,继承了`ImageView`的所有功能...
在安卓开发中,`ImageButton` 是一个非常常用的控件,它继承自 `ImageView`,并且增加了点击事件的支持,使得我们可以在按钮上展示图像,并通过点击执行相应的操作。本压缩包包含的是关于 `ImageButton` 在 Android ...
在Android开发中,`ImageButton`是一个非常常用的控件,它继承自`Button`,但主要用来显示图像,常用于实现点击按钮时改变图像的效果,比如开关按钮、选择按钮等。本教程将深入探讨如何在`ImageButton`中实现图片的...
在Android开发中,`ImageButton`是一个非常常用的控件,它结合了`ImageView`的功能和`Button`的交互性,允许用户通过点击来触发相应的事件。本篇将深入探讨`ImageButton`在点击时如何实现图像的变化,并通过源码解析...
Android2.2 API中文文档——ImageButton.doc
本篇将详细讲解`ImageButton`的使用方法以及如何实现长按`Button`的功能。 ### 1. Android ImageButton的基本使用 `ImageButton`主要用于展示图标,并且可以响应用户的点击操作。在布局文件中,我们可以这样声明一...
imageButtons[0] = (ImageButton) this.findViewById(R.id.button01);//得到button01的引用 imageButtons[1] = (ImageButton) this.findViewById(R.id.button02);//得到button02的引用 imageButtons[2] = ...
- **setOnClickListener(View.OnClickListener l)**:这个方法来自`View`类,用于为`ImageButton`添加点击事件监听器。你需要提供一个实现了`OnClickListener`接口的匿名内部类,其中包含`onClick(View v)`方法,...
在本教程中,我们将探讨如何在用户点击`ImageButton`时动态改变其背景图片,这个功能可以通过使用`Selector`来实现。`Selector`是Android中的一个强大的工具,它可以根据组件的状态来改变其外观。 首先,我们需要...
在Android开发中,`ImageButton`是一个非常重要的视图组件,它是`Button`的子类,但与普通`Button`的区别在于它可以显示图像,这使得它成为创建图标化操作按钮的理想选择。`ImageButton`的设计旨在提供一种更加直观...
在Android的布局文件中,我们通常使用`<ImageButton>`标签来定义它,它是`Button`类的一个子类,继承了`View`和`OnClickListener`等特性。 ### 1. 图像按钮的基本用法 在XML布局文件中,我们可以这样创建一个`...
在Android开发中,`ImageButton`是一个非常常用的组件,它继承自`ImageView`,但与普通的`ImageView`不同,`ImageButton`允许用户点击,因此常用于实现具有交互功能的按钮。本篇文章将深入探讨`ImageButton`的使用,...
本篇将深入探讨在Android 4.0(API Level 14)环境下如何使用`ImageButton`,通过实际的代码实例帮助理解其工作原理和应用场景。 首先,`ImageButton`的基本用法与`ImageView`相似,都是通过设置`android:src`属性...
在Android开发中,按钮(Button)和图像按钮(ImageButton)是两种常见的用户交互元素,用于接收用户的点击事件并触发相应的操作。本篇文章将详细讲解如何为Android的ImageButton添加点击时的变换特效,使得用户交互...
在Android开发中,`ImageButton` 是一个非常常用的控件,它继承自 `Button`,但主要用来显示图像,而非文字。在许多应用界面设计中,我们经常需要为 `ImageButton` 设置不同的图片以实现不同的功能状态,例如:按下...
本话题将深入探讨如何在C#中创建一个自定义控件——ImageButton,以及如何实现鼠标按下后显示不同图片的功能。 首先,我们来理解什么是自定义控件。自定义控件是通过继承已存在的Windows Forms或WPF控件,并在其...
在Android开发中,`ImageButton`是一个非常常用的组件,它继承自`ImageView`,但增加了点击事件的支持,使得用户可以通过点击图像来执行相应的操作。本文将详细介绍如何在Android应用中正确地使用`ImageButton`并...
本文将深入探讨`ImageButton`的基本概念、使用方法、属性设置以及实际应用场景,帮助开发者更好地理解和运用这个控件。 ### 一、基本概念 `ImageButton`是一个专门用于显示图像,并可以响应用户点击事件的视图。与...