android布局共享,布局共享(如所有ACTIVITY拥有相同的布局部分,比如ACTIONBAR,在BASEACTIVITY中写入布局)...

有时候界面上会用到统一的布局,比如toolbar,你可能会想到在用到的地方都去加上toobar这样对于程序的开发与维护来说都显得特别麻烦,我们可以将他写在父类中。

首先创建一个BaseActivity,MainActivity继承BaseActivity。通过重写setContentView和将子布局和父布局add到同一布局中的方式来实现。代码如下:

1.BaseActivity布局->layout_baseactivity

69c5a8ac3fa60e0848d784a6dd461da6.png

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="wrap_content"

tools:context="chan.joker.sharecontentview.BaseActivity"

android:orientation="vertical"

android:gravity="center"

android:background="#0000c6"

android:padding="10dp"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="ShareContentView"

android:textColor="#00ff00"

/>

69c5a8ac3fa60e0848d784a6dd461da6.png

2.BaseActivity---- 红色部分为实现代码

69c5a8ac3fa60e0848d784a6dd461da6.png

/**

* 父类activity

*

* @author joker.chan

* @version 1.0

* @since 2015年5月14日 09:04:42

*/

public class BaseActivity extends Activity {

private LinearLayout parentLinearLayout;//把父类activity和子类activity的view都add到这里

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

initContentView(R.layout.layout_baseactivity);

}

/**

* 初始化contentview

*/

private void initContentView(int layoutResID) {

ViewGroup viewGroup = (ViewGroup) findViewById(android.R.id.content);

viewGroup.removeAllViews();

parentLinearLayout = new LinearLayout(this);

parentLinearLayout.setOrientation(LinearLayout.VERTICAL);

viewGroup.addView(parentLinearLayout);

LayoutInflater.from(this).inflate(layoutResID, parentLinearLayout, true);

}

@Override

public void setContentView(int layoutResID) {

LayoutInflater.from(this).inflate(layoutResID, parentLinearLayout, true);

}

@Override

public void setContentView(View view) {

parentLinearLayout.addView(view);

}

@Override

public void setContentView(View view, ViewGroup.LayoutParams params) {

parentLinearLayout.addView(view, params);

}

}

69c5a8ac3fa60e0848d784a6dd461da6.png

3.MainActivity布局->activity_main

69c5a8ac3fa60e0848d784a6dd461da6.png

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#ff0000"

tools:context=".MainActivity">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:text="@string/hello_world"

android:textSize="16sp"

android:textColor="#ffffff" />

69c5a8ac3fa60e0848d784a6dd461da6.png

4.MainActivity

69c5a8ac3fa60e0848d784a6dd461da6.png

public class MainActivity extends BaseActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

69c5a8ac3fa60e0848d784a6dd461da6.png

界面效果图如下:其中蓝色部分为统一界面

541ee3f4d28bb9d48c46613239b69b5d.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值