Android 獲取view的位置和設置view的位置

今天在動態設置子layout中的控件動態佈局的時候,老是設置不到合適的位置,查閱了很多資料,終於搞定!現記錄如下:

一、首先是獲取VIEW的位置介紹:

有四種方法:

getLocalVisibleRect , 返回一個填充的Rect對象, 當前Rect大小,left,top取到的都是0,只有botton和right有效

getGlobalVisibleRect , 獲取全局座標系的一個視圖區域, 返回一個填充的Rect對象;該Rect是基於總整個屏幕的

getLocationOnScreen ,計算該視圖在全局座標系中的x,y值,(注意這個值是要從屏幕頂端算起,包括了通知欄的高度)//獲取在當前屏幕內的絕對座標 

getLocationInWindow ,計算該視圖在它所在的widnow的座標x,y值,//獲取在當前窗口的絕對座標


二、設置你的VIEW到指定位置

Rect imgRect = new Rect();
FrameLayout.LayoutParams focusItemParams = new FrameLayout.LayoutParams(10, 10);
selected.getGlobalVisibleRect(imgRect);

focusItemParams.leftMargin =imgRect.left;
focusItemParams.topMargin =imgRect.top;
focusItemParams.width = imgRect.width();
focusItemParams.height = imgRect.height();
selected.getLocationInWindow (viewPosition);
focusView.setLayoutParams(focusItemParams);//focusView爲你需要設置位置的VIEW

注:在設置位置的時候,父layout儘量使用framelayout或者relativlayout,當然如果你非要用linearlayout的話,就不要用權重了,不然到時候坐邊距和上邊距,你都不知道設置多少。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章