我有一个复杂的时间表来使用TextViews
. 我看到绝对布局已经贬值了。现在我知道这是“不好的做法”,但我有一个格式良好的屏幕指标类,可以调整与屏幕尺寸/密度等相关的所有内容。
如果我不能使用绝对布局,那么我怎么能告诉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);
}
这是我从这个快速测试代码中调用的方法:
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);