2016-11-21 111 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

相關問題