我有一个布局,其中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位置为旧位置+新显示的相对布局的高度,以便按钮显示在其上方?
答案 0 :(得分:0)
这很简单,我们需要做的就是将按钮放在RelativeLayout的y坐标上。
我们可以通过调用来获取y坐标:
rl.getY();
由于我们希望按钮位于rl之上,我们将从rl的y坐标中减去它的高度,如下所示:
button.setY(rl.getY() - button.getHeight());