[英]Set Views Y position programmatically
我有一個布局,其中有一個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位置成為舊位置+新顯示的相對布局的高度,使按鈕顯示在其上方?
這很簡單,我們要做的就是將按鈕定位在RelativeLayout的y坐標上。
我們可以通過調用以下方法獲得y坐標:
rl.getY();
並且由於我們希望按鈕位於rl上方,因此我們將從rl的y坐標中減去其高度,如下所示:
button.setY(rl.getY() - button.getHeight());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.