如何扩大控件的触控响应区域

最近在做一个相当奇葩的需求:扩大控件的触控区域,不改变控件大小。

从一个大牛同事那学了一个方法,可惜只能用于父控件内只有一个子控件需要扩大触控区域的情况。

一下是大体的代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       view =  this.findViewById(R.id.texting);
      
      ViewTreeObserver vto = view.getViewTreeObserver();
      vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){

		@Override
		public void onGlobalLayout() {
			
			//Create a new Rect 
			Rect bounds = new Rect();
			//get hit rect from view 
			view.getHitRect(bounds);
			//reset left,right,top,bottom
			bounds.left +=10;
			bounds.right +=10;
			bounds.top +=10;
			bounds.bottom += 10;
			//create a TouchDeleget and set to the parent of this view.
			View parent = (View)view.getParent();
			TouchDelegate touchDelegate = new TouchDelegate(bounds,view);
			parent.setTouchDelegate(touchDelegate);
		}});
      
    }
同一层视图上如果有多个控件需要扩大触控区域的情况,暂时还没有完美的解决方案。

大体的思路如下:


在父控件的 diepatchTouchEvent方法上对触控点进行判断,如果符合某个子控件的就由那个子控件进行响应。


这个方案下,我的每一次点击都成了长按事件。不完美。



转载于:https://my.oschina.net/benzhang99/blog/156742

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值