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

publicclassTest0812ActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/@... 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?
需要怎么改可以解决这个问题?
展开
 我来答
meachil_he
推荐于2018-03-18 · 超过14用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:56.1万
展开全部
btt.setText("4567");
btt.layout(100, 100, 200, 200);
btt.postInvalidate();
layer.addView(btt);
你这样排版试试
追问
事实上不行
追答
刚睡醒,我再帮你看看
我查了一下,我发现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);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CatDragon_IE
2018-03-18
知道答主
回答量:40
采纳率:50%
帮助的人:5.1万
展开全部
关于楼上的onCreate()问题
我推测应该是在onCreate()之后才开始绘图,所以会导致layout()失效
解决办法是post一个Runnable,在Runnable内部layout()
同样,在构造函数中使用layout()也无效
别说layout()了,玩个getWidth()都是0
同样一个Runnable解决问题
还有,楼主用的就是AbsoluteLayout...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式