【问题标题】:Android - how to drag a view within screen size?Android - 如何在屏幕大小内拖动视图?
【发布时间】:2014-07-28 06:37:32
【问题描述】:

我正在开发拖放功能。效果很好,但是可以将按钮拖到屏幕宽度、高度之外。我只想在 1080*1920 的屏幕尺寸内拖动。请建议我。

我正在这样做:

onCreate
{
Button btn_tag=new Button(getApplicationContext);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                    250,100);



            lp.leftMargin = (int) event.getX();

            lp.topMargin = (int) event.getY();// TOP MARGIN;

            rl_main.addView(btn_tag, lp);
}

// Touch Event


final int X = (int) event.getRawX();
        final int Y = (int) event.getRawY();
case MotionEvent.ACTION_DOWN:

            RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) v
            .getLayoutParams();

            _xDelta = X - lParams.leftMargin;
            _yDelta = Y - lParams.topMargin;

            break;

case MotionEvent.ACTION_MOVE:

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) v
                    .getLayoutParams();
layoutParams.leftMargin = X - _xDelta;
                layoutParams.topMargin = Y - _yDelta;
v.setLayoutParams(layoutParams);

【问题讨论】:

标签: android view drag-and-drop


【解决方案1】:

当您尝试移动按钮时,您可以使用if statement 检查按钮是否超出屏幕范围。

样本:

if((X - xDelta) > 0 && (X - xDelta) < 1080 )
  layoutParams.leftMargin = X - _xDelta;
if((Y - xDelta) > 0 && (Y - xDelta) < 1920)
  layoutParams.topMargin = Y - _yDelta;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    相关资源
    最近更新 更多