以编程方式设置视图Y位置

时间:2016-11-21 14:20:22

标签: android

我有一个布局,其中RelativeLayout的可见度为GONE。此rl是条形图的布局,当将可见性设置为visible时,按钮显示在片段的底部。虽然RL仍然不可见,但有2个按钮,当我将其设置为可见时,RL覆盖按钮。

我想要做的只是将按钮向上移动到可见的条形图上方。我试图做的是:

rl.setVisibility(View.VISIBLE);
rl.post(new Runnable() 
{   
                int dpToPx(final int dp)
                {
                    return (int) (dp * getResources().getSystem().getDisplayMetrics().density + 0.5f);
                }

                @Override
                public void run() {
                    int h = rl.getHeight(); //height is ready
                    h = dpToPx(h);
                    ImageButton button = (ImageButton)inflate.findViewById(R.id.button1);
                    float y = button.getY();
                    button.setY((float)h+y - 1100);
                    ImageButton button2 = (ImageButton)inflate.findViewById(R.id.button2);
                    y = button2.getY();
                    button2.setY((float)h+y);
                }
            });

带有-1100的按钮(这个号码只是我检查过的,看它是如何影响按钮的位置而不会停留在那里)显示我想要它的位置。另一个按钮太高或太低,不再可见。

如何设置位置,使按钮的Y位置为旧位置+新显示的相对布局的高度,以便按钮显示在其上方?

1 个答案:

答案 0 :(得分:0)

这很简单,我们需要做的就是将按钮放在RelativeLayout的y坐标上。

我们可以通过调用来获取y坐标:

rl.getY();

由于我们希望按钮位于rl之上,我们将从rl的y坐标中减去它的高度,如下所示:

button.setY(rl.getY() - button.getHeight());