0

我以编程方式在 onCreate 方法中向我的 LinearLayout 添加了一个 ImageView ,它可以正常工作。

    img = new ImageView(this);
    img.setImageResource(R.drawable.source);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.setMargins(0, 50, 0, 0);
    img.setLayoutParams(params); 


  layout = (LinearLayout) findViewById(R.id.index_view);
            layout.addView(img);

当用户触摸屏幕时,我想改变它的 x 和 y 坐标。
onTouch 方法 - 案例 ACTION_MOVE:

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(newX, newY, 0, 0);
img.setLayoutParams(params);

newX 和 newY 是根据用户的触摸坐标计算的

但是这段代码似乎不能正常工作。我创建了 toasts 以在每次触摸后向我显示图像宽度,它向我显示第一次触摸后宽度设置为零。这告诉我: ImageView 消失了。

有什么猜测吗?

4

1 回答 1

2

我假设您确保您newX, newY在 onTouch() 中获得了值。我觉得您的目标是编辑布局参数,但不是这样做,而是分配一组的参数,宽度和高度为LayoutParams.WRAP_CONTENT,然后设置边距。

您可以尝试首先获取现有参数,如下所示:

LinearLayout.LayoutParams params =
 ( LinearLayout.LayoutParams) img.getLayoutParams();

然后更改边距:

params.setMargins(newX, newY, 0, 0);
img.setLayoutParams(params);

尝试并通知它是否有帮助。如果没有,那么我们可以进一步讨论。

于 2013-05-28T00:31:42.077 回答