1. 程式人生 > >程式碼中動態設定相對佈局裡控制元件的位置

程式碼中動態設定相對佈局裡控制元件的位置

  RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) imageButtonCursor.getLayoutParams();
        layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, R.id.imageButtonCursor);
設定imageButtonCursor在底部(因為之前此控制元件是依附A控制元件來設定位置的,根據需求A控制元件要隱藏掉,當A控制元件隱藏的時候,imageButtonCursor會跑位,所以要這樣動態設定)
這裡要說名的是 imageButtonCursor的父佈局是RelativeLayout 否則getLayoutParams強轉會報錯的
 RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) imageButtonCursor.getLayoutParams();
        //因為對SDK要求17以上 所以放棄此方法
        //layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_BOTTOM);     //這裡需要清除掉之前設定的位置 否則不生效
        layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 0);
        layoutParams.addRule(RelativeLayout.ABOVE, R.id.horizontalScrollView1);

R.id.horizontalScrollView1為A控制元件(根據需求此時A控制元件要顯示)顯示出來後
imageButtonCursor有要根據A控制元件去找位置 因為之前設定imageButtonCursor顯示在底部 如果不清除這個位置則 設定的相對位置則是無效的 17以上可以用removeRule的方法 為了相容只能用
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 0);