我有一個複雜的時間表使用TextViews
佈局。我發現絕對佈局已被折舊。現在我知道這是「不好的做法」,但我有一個格式良好的屏幕度量類,將調整所有相關的屏幕尺寸/密度等。android絕對佈局
如果我不能使用絕對佈局,那我該如何告訴TextView
我想要這麼多左和頂? (就像使用絕對位置的HTML一樣)?
我想以編程方式不使用XML。這是可能的還是我必須使用WebView
或畫布?
編輯::
void positionView (TextView v, int x, int y, int w, int h){
final ViewGroup.MarginLayoutParams lpt = new ViewGroup.MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);//v.getLayoutParams();
//lpt.setMargins(x,y,x+w,y+h);
lpt.height=h;
lpt.width=w;
lpt.topMargin=y;
lpt.leftMargin=x;
v.setLayoutParams(lpt);
}
這是方法,我從這個快速testcode呼籲:
ScrollView dayViewContainer = new ScrollView(context);
dayViewContainer.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
FrameLayout dayView = new FrameLayout(context);
dayView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
dayView.setBackgroundColor(0xFF00FF00)
int lineHeight = 60;
for(int i =0;i<11 ;i++){
TextView hourView = new TextView(context);
hourView.setText(""+i+":00");
BrScreenMetrics.getScreenWidthPX()-20, lineHeight);
positionView(hourView, 50, i*lineHeight, BrScreenMetrics.getScreenWidthPX()-20, lineHeight);
dayView.addView(hourView);
}
dayViewContainer.addView(dayView);
addView(dayViewContainer);
是@Sujit貼會爲你工作的偉大這段代碼,你可以考慮使用的FrameLayout作爲替代的絕對佈局。您可以從左上角開始設置邊距,並且放置在frameLayout中的視圖不依賴於彼此。他們是一個在另一個之上,所以他們可以重疊放在任何地方你想要的地方等。 – DArkO
很好,這聽起來很完美,謝謝 –
不幸的是它沒有工作。我創建了一個框架視圖並將邊距添加到視圖中,但它們只停留在0,0。我可能需要使用webview,因爲我已經浪費了一天的時間已經:( 我不明白他們爲什麼折舊絕對佈局,因爲它確實是我想要的,並且當使用屏幕指標進行計算時可以在不同的設備上正常工作。 –