根据 Button 的位置动态调整 ImageView 的位置

Adjusting the location of an ImageView dynamically based on the location of a Button

我正在尝试创建一个 activity,它将在单击按钮时显示图像。到目前为止,我已经成功地使我的应用程序在您单击按钮时淡入淡出图像,但我希望图像显示在已按下的按钮上。

根据我的理解,您想使用我尝试过的 LayoutParams 来解决这个问题,但它似乎从我的 Button.getX()getY() 中得到了错误的值。这是我的代码:

button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ConstraintLayout.LayoutParams layoutParamsButton1 = new ConstraintLayout.LayoutParams(((int)button1.getX()), ((int)button1.getY()));
            whatImage[0].setLayoutParams(layoutParamsButton1);

            fadeInAndHideImage(whatImage[0]);
        }
    });

whatImage[] 只是一个 ImageView 的数组,因为我想改变它们的位置,仅供参考。

无论如何,我认为可能发生的是 getX()getY() 方法重新调整错误值的问题,因为我的按钮受到 android.support.constraint.Guideline 的限制。另外,我认为这不是问题,但我必须将它们转换为 (int)s,因为它们都 return 浮动。可能存在一些舍入错误,但我怀疑 getX()getY() 会 return 值的一半或四分之一像素。

谢谢

编辑

刚刚尝试将 ((int)uno.getX()), ((int)firstRail.getY()) 添加到我的 LayoutParams 而不是按钮 x 和 y,(uno 和 firstRail 是我用于按钮的指南),但不幸的是它把按钮放在使用按钮 getX()getY() 方法与 LayoutParams 相同的位置。

另外,图片移动的时候好像缩小了,这也很奇怪

编辑 2

呃,在打印出来查看这些值到底是什么之后,button1.getX()firstRail.getX() 都是 return 0.0。这在使用约束布局时甚至可能吗??

尝试:

whatImage[0].setX(button1.getX());

whatImage[0].setY(button1.getY());

另外请记住,如果您将一些填充属性添加到您的 ImageView 到 xml

中,则可能会发生调整图像大小的情况