android布局共享,[转]android: 共用一layout/主布局添加子布局

小结:

一、其他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的两种形式,里面可思考的很多,比如封装常用事件、资源,从而节省代码、节省资源;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值