2016-11-21 67 views
0

我得到了一个RelativeLayout的布局,其可见度为GONE。此rl是在将可见性设置为visible时出现在碎片底部的带有按钮的条形图的布局。虽然RL仍然不可见,但有2个按钮,当我将其设置为可见时,RL覆盖按钮。以编程方式设置视图Y位置

我想要做的只是将按钮向上移动,使其变得可见。我试图做到这一点:

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

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

我们可以得到在y通过调用坐标:

rl.getY(); 

而且,由于我们希望按钮是RL上面,我们会从Y减去其高度RL的坐标,是这样的:

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

这是不合逻辑的,因为RL的getY不会改变,按钮的高度相等,所以结果对于所有的都是一样的。它应该是按钮的getY和RL的高度,而不是相反。 –

+0

对不起,我可能会误解,你可以发布你的布局实现,以便我可以有一个更好的理解?你在使用XML还是动态创建它? – Khaled

相关问题