我創建一個ImageView的編程方式:餘量設置程序不會立即應用到視圖
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(50,50);
lp.setMargins(4,4,4,4);
ImageView color = new ImageView(this);
color.setLayoutParams(lp);
colorPicker.addView(color); //adding view to linearlayout
Log.i("X", "" + color.getX());
...
我嘗試通過color.getX()
檢索color's
X poistion,但由於某些原因,它返回0
而不是4
意味着它不是採取保證金考慮
也表現在,我發現requestLayout()
可能會解決這個文檔一些搜索之後,但它不利於要麼
public void setMargins(int left,int top,int right,int bottom)
設置邊距(以像素爲單位)。對requestLayout()的調用需要完成,以便考慮新的邊距。根據佈局方向的不同,requestLayout()可能會覆蓋左右邊距。
UPDATE
如果我叫color.getX()
的onClick監聽器裏如預期
'getX()'根據視圖的父項返回座標。首先將視圖添加到某個父視圖組。 –
將視圖添加到LinearLayout中,只是沒有將其添加到上面的代碼 – idanakav
不應將日誌語句放置_after_添加視圖到佈局中? –