有一些Textview,我需要動態地將它們添加到RelativeLayout中。我如何添加它們而不與以前重疊? THX:daddView到RelativeLayout時如何避免重疊?
public class CusRelativeLayout extends RelativeLayout {
private String TAG = "CusRelativeLayout";
...
public void add(String s){
final int childCount = getChildCount();
final TextView tv = new TextView(context);
tv.setText(s);
tv.setTextColor(getResources().getColor(R.color.black));
LayoutParams params = (LayoutParams) generateDefaultLayoutParams();
int[] xy = getRandomXY();
if(childCount == 0){
//no view
params.setMargins(xy[0],xy[1],0,0);
}else{
//what shoud I do???
}
addView(tv,params);
}
...
}
它看起來像這樣: result
當我添加的第一個標籤,我只是需要一些隨機的X和Y,以及新一textview.I使用方法setMargins(X ,y,0,0)添加到RelativeLayout中。但是當我添加第二個標籤時,我可以使用getTop(),getLeft(),getHeight(),getiWidth()來獲取前一個位置和範圍。並且使用getRandomXY()來獲得隨機X和Y該second.But我不能得到第二的範圍,以確定是否第二與第一
重疊,我試圖做到這一點
final TextView tv = new TextView(context);
tv.setText(s);
tv.setTextColor(getResources().getColor(R.color.black));
tv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
tv.post(new Runnable() {
@Override
public void run() {
Log.e(TAG,"height:" + tv.getHeight());
Log.e(TAG,"width:" + tv.getWidth());
}
});
但值爲0
如果我只需由X和Y來確定,就是這種情況。 determine by X and Y
我只想在添加到RelativeLayout之前獲取新標籤的範圍,這樣我就可以確定它是否會與前一個重疊。
如果我能確定所有的標籤位置的RelativeLayout前添加?(我知道標記的確切數量)
這是什麼樣子的視覺?難道你不能使用標準的LinearLayout嗎? – zsmb13
請檢查問題更新,謝謝 – feng