扩大小按钮的事件点击范围

我们在平时的实战开发过程中经常会碰到这样的一些需求,我们要点击一个小按钮弹出一个DialogFragment或者点击之后跳转到另外一个界面上去,我们发现由于按钮太小了不容易点击,这样的体验非常不好,怎么办?

效果图

很多长人肯定会说给View加个Padding就行了嘛,是的这样可以解决问题,但是你有没有想过如果该View有背景图,结果你加了个Padding ,View的背景图变形了,这种情况下通过加Padding加大点击范围的方案就行不通了,如何破解?其实很简单,稍微懂点脑筋就把这个问题解决了,我们给这个小按钮外围包裹一个LinearLayout或RelativeLayout,当我们点击外围的LinearLayout或RelativeLayout的时候把这个事件传递给小按钮问题立马就解决了

关键代码:

public class FatArrowView extends RelativeLayout {
//拦截事件
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {( http://www.my516.com)
Log.v(TAG,"onInterceptTouchEvent start...");
return true;
}

//把事件分发给我们的子View CheckBox
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.v(TAG,"onTouchEvent start...");
//当手指离开屏幕的时候设置CheckBox的状态
if (event.getAction() == MotionEvent.ACTION_UP){
ischeck = !ischeck;
mCheckBox.setChecked(ischeck);
}
return true;
}
}

原文地址:https://www.cnblogs.com/hyhy904/p/11369924.html

时间: 2024-10-09 03:49:10

扩大小按钮的事件点击范围的相关文章

监听当点击微信等app的返回按钮或者浏览器的上一页或后退按钮的事件

在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的 需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包等app的返回按钮或者浏览器的上一页或后退按钮的事件呢. 首先我们要了解浏览器的history.大家知道在页面中我们可以使用JavaScript window history,后退到前面页面,但是由于安全原因javascript不允许修改 history里已有的url链接,但可以使用pushStat

文本框输入完毕后,点击Enter触发按钮Click事件

文本框输入完毕后,点击Enter触发按钮Click事件 在C#编程中,我们经常碰到一个问题,就是在文本框中输入一些文字后,点击某按钮做一些响应处理.如百度搜索那样的,填写搜索内容,点击百度即可.当然我这里也有相应的情况: 输入文字后,点击按钮触发翻转文字效果. 如果想要用按下Enter代替点击按钮,可以这样写: private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) {

多个按钮用一个点击事件

有btn1,btn2,btn3,btn4,btn5,5个按钮,如何区分哪个按钮触发的点击事件 先将按钮放到一个数组中 private _btnArr:Array = new Array(); private function initBtnArr():void {    _btnArr = [    btn1,    btn2,    btn3,    btn4,    btn5    ];  } 点击事件 public function onClickBtn(ui:CUIBaseButton,

练习题:获取登录按钮及整个登录面板,给登录按钮添加事件,点击时让登录层示,点击登录面板的关闭按钮,关闭整个登录层

获取登录按钮及整个登录面板,给登录按钮添加事件,点击时让登录层示,点击登录面板的关闭按钮,关闭整个登录层 点击登录后: <!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> *{margin:0;padding:0;} .head{font-size:1

Android 按钮的响应点击事件的4种写法

Android按钮的响应点击事件 学习了按钮的响应点击事件,写一下总结,写的不好的希望大家能给出意见或建议. 这是layout xml文件   点击事件只需要获得Button的id或者onClick <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" an

点击按钮触发事件调用存储过程1

protected void btnAdd_Click(object sender,EventArgs e) { txtEmpID.Text = Coeno.Utility.String.CleanUpInput(txtEmpID.Text); txtEmpName.Text= Coeno.Utility.String.CleanUpInput(txtEmpName.Text); txtEmpCardID.Text = Coeno.Utility.String.CleanUpInput(txtE

IOS开发UISearchBar失去第一响应者身份后,取消按钮不执行点击事件的问题

在iOS开发中,使用UISearchBar的时候,当搜索框失去焦点的时候,取消按钮是默认不能点击的,如图按钮的颜色是灰色的:  这是因为此时取消按钮的enabled属性被设置为NO了,那么当我们需要让取消按钮一直可以点击的时候,就需要我们自己来改变该属性的赋值,这里举例当点击search按钮的时候,回收键盘的同时让取消按钮的可以点击,在代理方法里面添加代码如下: -(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { [sea

使用ajax后提交事件后禁用按钮,事件执行完毕后,重新启用按钮

一直想做这样的效果,实现的方法虽然不是很好,但效果还是出来了 <script runat="server"> /// <summary> /// 当Button2被点击,实际是Button3触发事件,这样就可以达到提交事件时禁用被提交的按钮效果 /// </summary> protected void Button_Click(object sender, EventArgs e) { System.Threading.Thread.Sleep(5

delphi7 怎么让button按钮跟着鼠标点击dbgrideh数据行移动

delphi7 怎么让button按钮跟着鼠标点击dbgrideh数据行移动 在 dbgrid的DBGridCellClick 事件中加上: Delphi/Pascal code 1 2 3 4 5 6 7 8 9 10 11 var   x, y : integer ;   P: TPoint; begin   GetCursorPos(P);   Edit1.Text := Format('X: %d, Y: %d',[P.X, P.Y]);   x := frMainTest.Left ;