我正在使用onTouch侦听器来实现可拖动按钮。这是我的代码:
final Button b = (Button) rowView.findViewById(R.id.button1);
b.setFocusable(false);
b.setOnTouchListener(new OnTouchListener() {
int k = 0;
int prevX;
int x = 0;
@Override
public boolean onTouch(final View v, final MotionEvent e) {
final LinearLayout.LayoutParams par = (LinearLayout.LayoutParams) v.getLayoutParams();
switch (e.getAction()) {
case (MotionEvent.ACTION_MOVE):
if (k == 0) {
prevX = (int) e.getRawX();
}
x += (int) e.getRawX() - prevX;
prevX = (int) e.getRawX();
par.leftMargin = x;
Log.d("jy", "x: " + x);
k++;
v.setLayoutParams(par);
return true;
case (MotionEvent.ACTION_UP):
b.setText("hi");
par.bottomMargin = 0;
par.leftMargin = 0;
k = 0;
x = 0;
v.setLayoutParams(par);
return true;
}
return false;
}
});
我只能稍微拖动按钮。一旦我拖过按钮的原始位置,onTouchListener就会停止工作。
注意:这是自定义列表行单元格内的按钮。我正在使用线性布局。