您的位置:首页 > 移动开发 > Android开发

Android 多个页面复用一段布局文件

2015-12-23 13:19 549 查看
原文链接:http://blog.csdn.net/qq_26643421/article/details/50386374

复用的布局文件

在一些APP中 ,需要复用一些通用的布局文件 , 为了避免重复写布局文件 , 重复实例化控件 , 重复设置监听方法 . 可以把该部分代码抽取出来 , 单独封装, 利用接口回调 , 把整个代码封装起来 , 在activity 中只需要一行代码就可以实例化该部分代码 .

common_bottom_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary"
android:orientation="horizontal"
android:padding="6dp">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />

<Button
android:id="@+id/common_bottom_media"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="common_bottom_media"
android:text="采集" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />

<Button
android:id="@+id/common_bottom_report"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="common_bottom_report"
android:text="上报" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />

<Button
android:id="@+id/common_bottom_cancle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="common_bottom_cancle"
android:text="取消" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>


复用布局文件的实例化部分

CommonBottom.java

package com.depart.deqing.view;

import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.Button;

import com.depart.deqing.R;

/**
* Created by yx on 2015/12/21.
*/
public class CommonBottom implements View.OnClickListener {
Context mContext;
OnCommonBottomClick listener;

public CommonBottom(Context context) {
this.mContext = context;
}

@Override
public void onClick(View v) {
if (listener == null) return;
switch (v.getId()) {
case R.id.common_bottom_media:
listener.onMediaClick(v);
break;
case R.id.common_bottom_report:
listener.onReportClick();
break;
case R.id.common_bottom_cancle:
listener.onCancleClick();
break;
}
}

public interface OnCommonBottomClick {
public void onMediaClick(View v);

public void onReportClick();

public void onCancleClick();
}

public void setListener(OnCommonBottomClick listener) {
this.listener = listener;
}

public CommonBottom init() {
Button media = (Button) ((Activity) mContext).findViewById(R.id.common_bottom_media);
Button report = (Button) ((Activity) mContext).findViewById(R.id.common_bottom_report);
Button cancle = (Button) ((Activity) mContext).findViewById(R.id.common_bottom_cancle);
media.setOnClickListener(this);
report.setOnClickListener(this);
cancle.setOnClickListener(this);
return this;
}
}


使用该复用 布局块的部分

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<include layout="@layout/common_tool" />

<RelativeLayout
android:layout_margin="16dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</RelativeLayout>
<!-- 在布局文件中引用复用的布局文件 -->
<include layout="@layout/common_botton_layout" />
</LinearLayout>


在Activity中使用该部分代码

TestActivity.java

package com.depart.deqing.activitys;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.MotionEvent;
import android.view.View;

import com.depart.deqing.R;
import com.depart.deqing.base.BaseActivity;
import com.depart.deqing.view.CommonBottom;
import com.depart.deqing.view.CommonMediaPop;

/**
* Created by yx on 2015/12/22.
*/
public class TestActivityextends AppcompateActivity implements CommonBottom.OnCommonBottomClick {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onwatch_layout);
//在这里实例化布局文件, 并实现监听接口方法
//只需要一行代码就可以直接完成复用代码块的实例化
new CommonBottom(this).init().setListener(this);
}

@Override
public void onMediaClick(View v) {
//在这里实现对应点击事件的方法
}

@Override
public void onReportClick() {
//在这里实现对应点击事件的方法
}
@Override
public void onCancleClick() {
//在这里实现对应点击事件的方法
finish();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 布局