我有一个复杂的时间表使用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,因为我已经浪费了一天的时间已经:( 我不明白他们为什么折旧绝对布局,因为它确实是我想要的,并且当使用屏幕指标进行计算时可以在不同的设备上正常工作。 –