【Android开发学习44】android: 静态XML和动态加载XML混合使用,以及重写Layout控件
来源:互联网 发布:软件评测师难考吗 编辑:程序博客网 时间:2024/05/20 07:58
近期对android里面控件修改做了很多实验,由于公司需求很多,不得不重写很多控件。程序目标无非是:高效、轻巧、清晰、标准化
完成动态加载Layout有两种方法,依据个人喜好进行选择:
方法1:静态主Layout动态加载静态子Layout
首先构建子Layout:main2
<? xml version = "1.0" encoding = "utf-8" ?> <!--布局可以任意定义,此处拿线性布局举例,里面有2个按钮元素--> < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:id = "@+id/menubar" android:background = "@drawable/menubar" android:layout_width = "wrap_content" android:layout_height = "wrap_content" > <!--按钮1--> < ImageButton android:id = "@+id/button1" android:src = "@drawable/btn1" android:layout_width = "wrap_content" android:layout_height = "wrap_content" > </ ImageButton > <!--按钮2--> < ImageButton android:id = "@+id/button2" android:src = "@drawable/btn2" android:layout_width = "wrap_content" android:layout_height = "wrap_content" > </ ImageButton > </ LinearLayout >
然后构建主Layout:main
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:id = "@+id/background" android:layout_width = "fill_parent" android:layout_height = "fill_parent" android:background = "@drawable/background" > <!--主Layout要给子Layout设置一个容器box,可以在此指定容器的位置,这段是关键部分--> < LinearLayout android:id = "@+id/box" android:layout_alignParentBottom = "true" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_centerHorizontal = "true" > </ LinearLayout > </ RelativeLayout >
最后在程序中加载子layout:
public class BackgroundTest extends Activity { /** Called when the activity is first created. */ // 子Layout要以view的形式加入到主Layout中 private View mBarView; // 主Layout的容器加载子Layout的View private LinearLayout mLinearLayout; //给出关键内容 public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); // 显示主Layout setContentView(R.layout.main); // 加载子Layout mBarView = View.inflate(this , R.layout.main2, null ); // 找到容器 mLinearLayout = (LinearLayout)findViewById(R.id.box); // 加上View 结束 mLinearLayout.addView(mBarView);
方法2:静态主Layout动态加载动态的Layout
首先构造你自己的子Layout和上面一样;
然后构建你自定义的Layout类:
public class MenuLandscapeLinearLayout extends LinearLayout{ // 构造函数 public MenuLandscapeLinearLayout(Context context) { super (context); // TODO Auto-generated constructor stub //加载需要的属性,加载方法一的子Layout ((Activity) getContext()).getLayoutInflater().inflate(R.layout.main2, this ); //在此你可以封装很多方法 } }
最后在程序中动态实例化并加载即可:
public class BackgroundTest extends Activity { /** Called when the activity is first created. */ private LinearLayout mLinearLayout; //声明一个子Layout View对象 private MenuLandscapeLinearLayout mMenuLandscapeLinearLayout; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); // 加载主Layout setContentView(R.layout.main); // 找到容器 mLinearLayout = (LinearLayout)findViewById(R.id.box); // 实例化一个子View mMenuLandscapeLinearLayout=new MenuLandscapeLinearLayout( this ); // 添加到容器 mLinearLayout.addView(mMenuLandscapeLinearLayout); } }
至此,完成了动态加载子Layout的两种形式,里面可思考的很多,比如封装常用事件、资源,从而节省代码、节省资源;
抛砖引玉,分享经验,希望能助大家优化自己的程序。
转载自: http://zhujianjia.iteye.com/blog/1171596
- 【Android开发学习44】android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- android 开发零起步学习笔记(十五):android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- 动态加载XML,以及重写Layout控件
- [学习笔记-Android]动态添加Layout-XML方式
- Android Layout XML属性 及 控件属性
- Android学习个人笔记1-Layout界面布局-xml,java混合模式-自定义view
- 学习-使用 Android 和 XML 构建动态用户界面
- 【Android开发】用户界面设计-使用XML和Java代码混合控制UI界面
- Android Studio开发基础之使用XML和Java代码混合控制UI界面
- Android layout xml总结
- Android Layout XML属性
- coalesce partition 收缩分区
- IP地址分类
- 利用CCProgressTimer 实现自定义游戏血量条
- asp.net利用jquery播放mp3文件
- word中的字体大小是excel中的多少?
- 【Android开发学习44】android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- 开个csdn的blog要等三天才能写
- 编码中碰到的十个坑
- eclipse编译
- RTP/RTCP协议详解
- JNDI 是什么
- 开发自己的OpenFire插件
- IOS开发 两、三个界面相互传值,类似android的onActivityResult(拍照上传、预览图片、点击查看、删除)
- 驰骋工作流引擎LigerUI版本发布说明书