【问题标题】:ImageView disappears after LayoutParams ChangeLayoutParams 更改后 ImageView 消失
【发布时间】:2013-05-28 00:17:01
【问题描述】:

我以编程方式在 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 消失了。

有什么猜测吗?

【问题讨论】:

    标签: java android imageview coordinates touch-event


    【解决方案1】:

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

    您可以尝试先获取现有参数如下:

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

    然后改变边距:

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

    尝试一下,如果有帮助,请通知。如果没有,那么我们可以进一步讨论。

    【讨论】:

    • 我试过了——但还是不行。图像仍然完全消失
    • 好吧,我刚刚注意到一些很奇怪的事情:如果我将 newX 和 newY 设置为 40(例如)它可以工作。负边距是不可能的,这可能与它有关吗?我想这就是原因
    • 可能你的 newX, newY 值总是设置为 0。试着用你的调试器检查一下。
    • 不,他们不是;它们的值在 -1000 到 1000 之间
    • 如果假设你的屏幕是200x200并且你设置newX: Left marginnewY: Top margin为100、100,那么图像会发生什么?它将变为 0 大小。因此,如果您的这两个变量的值等于或大于这些值,那么您的 ImageView 大小可能会变为 0。嘿,澄清一下:您可能想阅读 this,然后阅读 this
    猜你喜欢
    • 2020-11-24
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多