我想在event.getX()== 200时只打印一次吐司。但它在getX()> 300之后多次显示oast

时间:2015-01-26 11:42:42

标签: android ontouchlistener

frmLayout.setPadding(Math.round(event.getX() - 20), 0, 0, 0);
if(event.getX()>=300)
  {
      frmLayout.setPadding(20, 100, 0, 0); 
  }//giving minimum padding 
} 
switch(event.getAction())
  {
    case 0: 
      Toast.makeText(MainActivity.this, "send Function "+event.getAction(), Toast.LENGTH_SHORT).show();
      // showing toast multiple yimes here
      break;
  }
if(event.getX()<=20)//give layout padding always x=20,y=100
  {
    frmLayout.setPadding(20, 100, 0, 0);
  } 

1 个答案:

答案 0 :(得分:0)

[编辑]

我相信案例0会检查按下的手势何时开始。因此,只要触摸屏幕,就会创建一个Toast消息。

因此修复将使用布尔标志在开关内部使用条件。

private boolean showToast = true; //Global var


switch (event.getAction()){
 case 0:
    if(showToast && event.getX() >= 200){
      Toast.makeText(MainActivity.this, "send Function "+event.getAction(),  Toast.LENGTH_SHORT).show();
      showToast = false; //This will stop the condition being met the second time
      break;
   }
}

我还没有对此进行测试,但我猜这会解决您的问题。