欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android动态布局小结

程序员文章站 2024-02-13 11:17:30
android动态布局相比静态布局,动态布局不用再将xml转变了布局代码,提高了一定的效率,当然可以忽略不记。动态布局主要是比较灵活,可以很快的在代码中直接修改布局,并直接...

android动态布局相比静态布局,动态布局不用再将xml转变了布局代码,提高了一定的效率,当然可以忽略不记。动态布局主要是比较灵活,可以很快的在代码中直接修改布局,并直接使用控件进行业务逻辑开发。但代码量通常比较大,维护没有静态布局方便。不过,作为一个android开发人员,掌握一定的动态布局技巧,有时在工作中也是可以提高一定的代码开发效率。

在动态布局中,要想实现一个布局,一般是先创建五大布局的对象。然后对这些对象进行属性设置,之后再向里面添加子布局或控件。

    以relativelayout为例。

 relativelayout mlayout = new relativelayout();
    //设置relativelayout的子控件属性对象,并设置其尺寸样式。每个groupview中都有一个layoutprams,都是用来给子控件设置发生的。


    relativelayout.layoutprams params = new relativelayout.layoutprams(layoutparams.wrap_content, layoutparams.wrap_content);
    //增加 子控件
    imageview iv = new imageview(getactivity());
    iv.setimageresource(r.drawable.tab_icon_conversation_normal);
    //设置子控件在realtivelayout中的位置属性。
    params.addrule(relativelayout.center_in_parent, relativelayout.true); //给iv 增加属性
     //将iv,增加到mlayout中
    mlayout .addview(iv, params); 

从最后一句,可以看出来,params对象引用设置的属性都是作用有imageview这个子控件上的,然后把iv与params一块加入到realtivelayout中去。

整理android动态布局方法总结

//绝对布局

absolutelayout abslayout=new absolutelayout (this);
setcontentview(abslayout);
button btn1 = new button(this);
btn1.settext(”this is a button”);
btn1.setid(1);
absolutelayout.layoutparams lp1 =
new absolutelayout.layoutparams(
viewgroup.layoutparams.wrap_content,
viewgroup.layoutparams.wrap_content,
0,100);
abslayout.addview(btn1, lp1);

//相对布局

relativelayout relativelayout = new relativelayout(this);
setcontentview(relativelayout);
absolutelayout abslayout=new absolutelayout (this);
relativelayout.layoutparams lp1 = new relativelayout.layoutparams(viewgroup.layoutparams.wrap_content, viewgroup.layoutparams.wrap_content);
lp1.addrule(relativelayout.align_parent_top);
lp1.addrule(relativelayout.center_horizontal, relativelayout.true);
relativelayout.addview(abslayout ,lp1);

//线性布局

linearlayout ll = new linearlayout(this);
edittext et = new edittext();
ll.addview(et);
//动态添加布局的方法1. linearlayout ll = (linearlayout)this.getlayoutinflater().inflate(r.layout.main1,null); setcontentview(ll); linearlayout ll2 = (linearlayout)this.getlayoutinflater().inflate(r.layout.main2,ll); //这样 main2 作为 main1的子布局 加到了 main1的 根节点下
//动态添加布局的方法2 addview. linearlayout ll = (linearlayout)this.getlayoutinflater().inflate(r.layout.main1,null); setcontentview(ll); linearlayout ll2 = (linearlayout)this.getlayoutinflater().inflate(r.layout.main2,null); ll.addview(ll2);