Android动态布局小结
程序员文章站
2023-12-19 17:20:58
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);
推荐阅读
-
Android动态布局小结
-
Android中GridView布局实现整体居中方法示例
-
Android布局自定义Shap圆形ImageView可以单独设置背景与图片
-
Android编程下拉菜单spinner用法小结(附2则示例)
-
Android Listview中显示不同的视图布局详解及实例代码
-
Android RecyclerView加载两种布局的方法
-
Android编程之点击按钮的响应方式小结【3种方式】
-
Android编程布局(Layout)之AbsoluteLayout用法实例分析
-
Android编程布局控件之AbsoluteLayout用法实例分析
-
Android编程之绝对布局AbsoluteLayout和相对布局RelativeLayout实例详解