【问题标题】:How to reduce the click area of an Button?如何减少Button的点击面积?
【发布时间】:2014-12-23 07:37:22
【问题描述】:

我有一个充满按钮的 gridview,如下所示:

现在,如果我单击按钮上的任意位置,它将被按下。但是我希望该按钮仅在单击浅灰色区域时才被按下,而不是顶部和左侧的深灰色或白色区域。我尝试使用setPadding(int,int,int,int)setPaddingRelative(int,int,int,int),但它们都没有任何效果。我该如何解决这个问题?

编辑:按钮是 50x50 并且已经从按钮类扩展

【问题讨论】:

  • 可以将 Button 放入布局中。布局将使“边框”和按钮仅是灰色区域(因此成为唯一的反应区域)。简单的。完成。

标签: java android android-button android-gridview


【解决方案1】:

从 Button 类继承自定义 Button 视图,并使用自定义代码覆盖 onDraw 方法。

您可以覆盖触摸方法来检测按钮何时被按下,并获取 x 和 y 坐标以删除不能按下按钮时的情况。

【讨论】:

  • onDraw 中的哪些自定义代码不会使按钮点击某些坐标?
【解决方案2】:

在您的自定义按钮中覆盖 onTouchEvent:

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (isInGrayArea(event.getX(), event.getY())) {
       return super.onTouchEvent(event);
    }
    return false;
}

event.getX() 和 event.getY() 是像素坐标,我想你需要将它们转换为 dp。

【讨论】:

  • 请分享isInGrayArea函数
猜你喜欢
  • 2015-09-23
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多