基于Android代码实现常用布局
程序员文章站
2023-12-14 16:49:52
关于 android 常用布局,利用 xml 文件实现已经有很多的实例了。但如何利用代码实现呢?当然利用代码实现没有太大的必要,也是不提倡的,但我觉得利用代码实现这些布局,...
关于 android 常用布局,利用 xml 文件实现已经有很多的实例了。但如何利用代码实现呢?当然利用代码实现没有太大的必要,也是不提倡的,但我觉得利用代码实现这些布局,可以更好的了解 sdk api ,所以在此也整理一些,和大家分享一下。
首先看一下,布局所对应的类的 api 继承图:
android常用布局的代码实现所有的布局都会对应相关的类,这些类都是继承自 android.view.viewgroup 类的。而 linearlayout,relativelayout 都是在 android.widget 包里的。另外,tablelayout 是继承自 linearlayout.
下面直接贴代码了。
// 利用代码设置 线性布局 private void setlinearlayout(){ linearlayout llayout = new linearlayout(this); llayout.setorientation(linearlayout.vertical); // 设置线性布局的排列方式 textview textview = new textview(this); textview.settext("代码实现的线性布局"); textview.settextcolor(color.red); textview.setgravity(gravity.center); // 设置文本内容的对齐方式 linearlayout.layoutparams ll_lpara = new linearlayout.layoutparams(mp,wc); // ll_lpara.gravity = gravity.center_horizontal; // 设置控件在布局中的对齐方式 llayout.addview(textview,ll_lpara); button btn = new button(this); btn.settext("按钮"); llayout.addview(btn,ll_lpara); // 按指定属性添加控件 setcontentview(llayout); }
实现效果图:
=========================================================================
// 利用代码设置 相对布局 private void setrelativelayout(){ relativelayout rlayout = new relativelayout(this); rlayout.setpadding(10, 10, 10, 10); // 单位: pixels int textviewid = 100; textview textview = new textview(this); textview.setid(textviewid); textview.settext("请输入:"); relativelayout.layoutparams rl_lpara1 = new relativelayout.layoutparams(mp, wc); rlayout.addview(textview, rl_lpara1); int edittextid = 200; edittext edittext = new edittext(this); edittext.setid(edittextid); edittext.setbackgroundresource(android.r.drawable.editbox_background); // 设置背景 , 同android:backgroumd relativelayout.layoutparams rl_lpara2 = new relativelayout.layoutparams(mp, wc); rl_lpara2.addrule(relativelayout.below,textviewid); // 设置相对属性,需先指定相对控件的id rlayout.addview(edittext, rl_lpara2); int backbtnid = 300; button backbtn = new button(this); backbtn.setid(backbtnid); backbtn.settext("返回"); relativelayout.layoutparams rl_lpara3 = new relativelayout.layoutparams(wc, wc); rl_lpara3.addrule(relativelayout.below, edittextid); rl_lpara3.addrule(relativelayout.align_parent_right); // 设置与父控件的相对属性 rlayout.addview(backbtn, rl_lpara3); button okbtn = new button(this); okbtn.settext("确定"); relativelayout.layoutparams rl_lpara4 = new relativelayout.layoutparams(wc, wc); rl_lpara4.addrule(relativelayout.left_of, backbtnid); rl_lpara4.addrule(relativelayout.align_top,backbtnid); rlayout.addview(okbtn, rl_lpara4); setcontentview(rlayout); }
实现效果图:
=========================================================================
// 利用代码设置 表格布局 private void settablelayout(){ tablelayout tlayout = new tablelayout(this); tlayout.setcolumnstretchable(2, true); // 拉长索引从0开始的第2列 tablelayout.layoutparams tl_lpara = new tablelayout.layoutparams(mp,wc); // 1. tablerow 不需要设置 layout_width, layout_height // 2. tablerow 中的控件不能设置 layout_span 属性 tablerow tr1 = new tablerow(this); textview textview0 = new textview(this); textview0.settext("第0列"); tr1.addview(textview0); textview textview1 = new textview(this); textview1.settext("第1列"); tr1.addview(textview1); textview textview2 = new textview(this); textview2.settext("第2列"); textview2.setbackgroundcolor(color.cyan); tr1.addview(textview2); tlayout.addview(tr1, tl_lpara); tablerow tr2 = new tablerow(this); button btn0 = new button(this); btn0.settext("按钮0"); tr2.addview(btn0); button btn1 = new button(this); btn1.settext("按钮1"); tr2.addview(btn1); button btn2 = new button(this); btn2.settext("按钮2"); tr2.addview(btn2); button btn3 = new button(this); btn3.settext("按钮3"); tr2.addview(btn3); tlayout.addview(tr2, tl_lpara); setcontentview(tlayout); }
实现效果图: