您好我使用drag'n下降选项而言,我采用了android工作室3 & SDK 26 当我到触摸事件中,我得到错误信息写一个应用程序: java.lang.ClassCastException :android.widget.LinearLayout $的LayoutParams不能转换到android.widget.RelativeLayout $的LayoutParams 那代码:拖放功能onTouch事件失败
private View.OnTouchListener OnTouchListener() {
return new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
final int x = (int) motionEvent.getRawX();
final int y = (int) motionEvent.getRawY();
switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams)
view.getLayoutParams();
xDelta = x - lParams.leftMargin;
yDelta = y - lParams.topMargin;
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view
.getLayoutParams();
layoutParams.leftMargin = x - xDelta;
layoutParams.topMargin = y - yDelta;
layoutParams.rightMargin = 0;
layoutParams.bottomMargin = 0;
view.setLayoutParams(layoutParams);
break;
}
mainlayout.invalidate();
return true;
}
};
}
我之前使用的代码,它的工作,我无法理解什么是错在这里。
<?XML版本= “1.0” 编码= “UTF-8”?> –
其相对布局... –
好吧,我认为在这种情况下触摸传播到你认为的孩子。如果您对特定视图内的触摸感兴趣,也许应该在使用RelativeLayout.LayoutParams layoutParams之前添加一种测试。像if(view ==我specefic视图)然后把其余的代码。 – Jaja