小结:
一、其他Layout共用一个layout
1.子布局适合大小;
2.主布局:
layout="@layout/title"/>
3.调用:当前view
.findViewByid得到子布局文件中的任意View
二、静态主布局动态添加静态子布局
1.子布局适合大小;
2.主Layout要给子Layout设置一个容器box
3.//
子Layout要以view的形式加入到主Layout中private View mBarView; //
主Layout的容器加载子Layout的View
private LinearLayout mLinearLayout;
//
加载子Layout
mBarView = View.inflate(this, R.layout.main2,
null); // 找到容器
mLinearLayout =
(LinearLayout)findViewById(R.id.box); // 加上View
结束
mLinearLayout.addView(mBarView);
三、静态主布局动态加载子Layout
1.子布局适合大小;
2.构造layout类
//加载需要的属性,加载静态子Layout
((Activity)
getContext()).getLayoutInflater().inflate(R.layout.main2,
this); //在此你可以封装很多方法
3.//
找到容器
mLinearLayout =
(LinearLayout)findViewById(R.id.box); //
实例化一个子View
mMenuLandscapeLinearLayout=new
MenuLandscapeLinearLayout(this); // 添加到容器
mLinearLayout.addView(mMenuLandscapeLinearLayout);
Android
在其他布局里共享同一布局文件
在任意LAYOUT文件里面将其他的LAYOUT文件拿过来使用,如下:
encoding="UTF-8"?>
android:id="@+id/FrameLayout01"
android:background="@drawable/layout_background"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
android:id="@+id/TextView01"
android:textColor="#f0f0f0"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
子layout
文件起名为:title。然后我们在另外的布局文件如下使用:即可将title
的布局直接拿到我们当前的布局文件中。
使用include标记将layout 放入我们当前的layout文件,也可以直接使用当前view
.findViewByid得到title 布局文件中的任意View 。
小结:子布局适合大小;
主布局:
layout="@layout/title"/>
调用:当前view
.findViewByid得到子布局文件中的任意View
动态加载Layout有两种方法:
方法1:静态主Layout动态加载静态子Layout
首先构建子Layout:main2
(子布局适合大小)
encoding="utf-8"?>
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">
android:id="@+id/button1" android:src="@drawable/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" >
然后构建主Layout:main
encoding="utf-8"?>
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">
android:id="@+id/box" android:layout_alignParentBottom="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true">
最后在程序中加载子layout:
public class BackgroundTest extends Activity
{ //
子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
{ 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的两种形式,里面可思考的很多,比如封装常用事件、资源,从而节省代码、节省资源;