我需要随时移动 $.ajax({
url: url,
type: 'POST',
data: {"nomorDosir": "01041701288", "kodeCabang": "A02"},
processData: false,
success: function(data){
console.log("success"+data);
},
error: function(e){
console.log("error: "+e);
}
});
。
这是我的代码:
EditText
它可以工作并移动editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float touchY = event.getY();
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, (int) touchY, 0, 0);
editText.setLayoutParams(lp);
return true;
}
});
和Touch,但问题是EditText
开始闪烁。意思是以非常高的速度上下移动。
我怎么能阻止它并像平滑一样移动它?
答案 0 :(得分:1)
试试这个,它为我工作。
代码:
editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int Y = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
_yDelta = Y - lParams.topMargin;
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
layoutParams.topMargin = Y - _yDelta;
v.setLayoutParams(layoutParams);
break;
}
return true;
}
});
答案 1 :(得分:0)
将您的代码放在 MotionEvent.ACTION_MOVE
中@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_MOVE:
float touchY = event.getY();
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, (int) touchY, 0, 0);
editText.setLayoutParams(lp);
break;
}
return true;
}
答案 2 :(得分:0)
edittext.setY(touchY);
答案 3 :(得分:0)
为视图设置LayoutParam
时,会强制视图重绘自身,在您的情况下会导致闪烁。您只需设置视图的X and Y
坐标,该坐标不会强制重绘视图,并且您可以通过触摸平滑拖动视图。
public boolean onTouch(View view, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
dX = editText.getX() - event.getRawX();
dY = editText.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
editText.setY(event.getRawY() + dY);
editText.setX(event.getRawX() + dX);
break;
default:
return false;
}
return true;
}
您可以关注整个代码here。