我有一个Button
,每当用户点击它时,它会增加EditText
中的数字,但我希望有一个onTouch方法,当用户将手指放在按钮上时增加速度(连续),像退格一样,当你点击它时,它只删除了一个字母,当你把它保持下来时,它会更快地删除单词,所以我在代码中都有ontouch和onclick,但每当我只点击onTouch触发按钮,我该怎么办?请帮忙吗?我搜索了很多,但找不到任何可以帮助我的东西
以下是我的代码的一部分
btnFineUp.setOnTouchListener (this);
btnFineUp.setOnClickListener (this);
@override
public void onClick (View view)
{
switch (view.getId ())
{
case R.id.btn_fine_up:
{
View v = findViewById (getCurrentFocus ().getId ());
EditText editText;
if (v instanceof EditText)
{
editText = (EditText) v;
}
else
{
return;
}
int calcStateAmp = +1;
if (view.getId () == R.id.btn_fine_up)
{
calcState_2 = upAndDown.getFineUpAmp () * calcStateAmp;
calcStateAmp = calcState_2;
}
double currentValue;
if (StringUtils.isNullOrEmpty (editText.getText ().toString ()))
{
currentValue = 0;
}
else
{
currentValue = Double.parseDouble (editText.getText ().toString ());
}
switch (getCurrentFocus ().getId ())
{
case R.id.txt_va1_a:
case R.id.txt_va2_a:
case R.id.txt_va3_a:
case R.id.txt_vb1_a:
editText.setText (String.format (Locale.ENGLISH, "%.2f", currentValue + (0.01 * calcStateAmp)));
break;
}
@Override
public boolean onTouch (View view, MotionEvent motionEvent)
{
switch (view.getId ())
{
case ir.vebko.R.id.btn_fine_up:
{
View v = findViewById (getCurrentFocus ().getId ());
EditText editText;
if (v instanceof EditText)
{
editText = (EditText) v;
}
else
{
return false;
}
int calcStateAmp = +1;
if (view.getId () == R.id.btn_fine_up)
{
calcStateAmp = calcState_2;
}
double currentValue;
if (StringUtils.isNullOrEmpty (editText.getText ().toString ()))
{
currentValue = 0;
}
else
{
currentValue = Double.parseDouble (editText.getText ().toString ());
}
switch (getCurrentFocus ().getId ())
{
case ir.vebko.R.id.txt_va1_a:
case ir.vebko.R.id.txt_va2_a:
case ir.vebko.R.id.txt_va3_a:
case ir.vebko.R.id.txt_vb1_a:
editText.setText (String.format (Locale.ENGLISH, "%.2f", currentValue + (0.01 * calcStateAmp)));
break;
}
return true;
}
答案 0 :(得分:0)
OnTouch
本身也会处理OnClick
的点击用户操作。因此,点击用户操作会首先引发ActionListener calculatorListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
int x = 9;
calc.calculate(x);
}
};
JButton button9 = new JButton("9");
buttonPanel.add(button9);
button9.addActionListener(calculatorListener);
JButton button8 = new JButton("8");
buttonPanel.add(button8);
button8.addActionListener(calculatorListener); //etc.....
事件;只有当没有监听器监听OnTouch
时才会调用OnTouch
事件。由于OnClick
事件与OnTouchListener
相关联,因此您无法调用OnTouch
。有关详细信息,请查看此question。
根据您的问题,您似乎可以完全跳过OnClickListener
,而是同时实施View.OnLongClickListener
和View.OnTouchListener
。
希望有所帮助。