Android编程中关于layout(l,t,r,b)函数的问题?

public class Test0812Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

AbsoluteLayout layer = (AbsoluteLayout)findViewById(R.id.AbsoluteLayout01);

CheckBox btt = new CheckBox(this);
layer.addView(btt);
btt.setText("4567");
btt.layout(100, 100, 200, 200);
btt.postInvalidate();
}
}
为什么生成的CheckBox总是出现在左上角,而不是layout函数中规定的100,100,200,200?
需要怎么改可以解决这个问题?

温温酱
浏览 679回答 3
3回答

幕布斯6054654

btt.setText("4567");btt.layout(100, 100, 200, 200);btt.postInvalidate();layer.addView(btt);你这样排版试试

MMMHUHU

我查了一下,我发现layout(l,t,r,b)这个方法在onCreate下使用始终都是失败的,失败的原因还有待进一步研究;但现在我推荐你使用AbsoluteLayout.LayoutParams可以达到你想要的效果。 AbsoluteLayout layer = (AbsoluteLayout)findViewById(R.id.AbsoluteLayout01);         AbsoluteLayout.LayoutParams param = new AbsoluteLayout.LayoutParams(100, 100, 200, 200);         CheckBox btt = new CheckBox(this);         btt.setText("4567"); layer.addView(btt,param);

回首忆惘然

我推测应该是在onCreate()之后才开始绘图,所以会导致layout()失效解决办法是post一个Runnable,在Runnable内部layout()同样,在构造函数中使用layout()也无效别说layout()了,玩个getWidth()都是0同样一个Runnable解决问题还有,楼主用的就是AbsoluteLayout...
打开App,查看更多内容
随时随地看视频慕课网APP