【问题标题】:Adjusting the location of an ImageView dynamically based on the location of a Button根据 Button 的位置动态调整 ImageView 的位置
【发布时间】:2018-01-01 23:13:12
【问题描述】:

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

据我了解,您想使用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[] 只是 ImageViews 的数组,因为我想改变它们的位置,仅供参考。

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

谢谢

编辑

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

另外,它似乎在移动时缩小图像,这也很奇怪

编辑 2

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

【问题讨论】:

    标签: android button imageview layoutparams


    【解决方案1】:

    试试:

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

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

    另外请记住,如果您将一些填充属性添加到 ImageView 到 xml 中,则可能会发生图像大小调整

    【讨论】:

    • 甜蜜!它似乎奏效了。我做了,但是取出了- whatImage[0].getWidth()/2,因为当它不需要与 setY() 上的第二部分一起时,该部分将它扔到左边。是的,感谢您添加关于填充的部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多