android布局共享,布局共享(如所有ACTIVITY拥有相同的布局部分,比如ACTIONBAR,在BASEACTIVITY中写入布局)...
本站寻求有缘人接手,详细了解请联系站长QQ1493399855
有时候界面上会用到统一的布局,比如toolbar,你可能会想到在用到的地方都去加上toobar这样对于程序的开发与维护来说都显得特别麻烦,我们可以将他写在父类中。
首先创建一个BaseActivity,MainActivity继承BaseActivity。通过重写setContentView和将子布局和父布局add到同一布局中的方式来实现。代码如下:
1.BaseActivity布局->layout_baseactivity
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:text="ShareContentView"
android:textColor="#00ff00"
/>
2.BaseActivity---- 红色部分为实现代码
/**
* 父类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);
public void setContentView(int layoutResID) {
public void setContentView(View view) {
parentLinearLayout.addView(view);
public void setContentView(View view, ViewGroup.LayoutParams params) {
parentLinearLayout.addView(view, params);
3.MainActivity布局->activity_main
android:layout_height="match_parent"
android:background="#ff0000"
tools:context=".MainActivity">
android:layout_gravity="center"
android:text="@string/hello_world"
android:textSize="16sp"
android:textColor="#ffffff" />
4.MainActivity
public class MainActivity extends BaseActivity {
setContentView(R.layout.activity_main);
界面效果图如下:其中蓝色部分为统一界面