Android 多个界面复用一个布局文件(一)
2017-09-15 17:03
218 查看
1.layout_common.xml
复用的布局文件
2.layout_main.xml
主布局文件 ,在这里引用复用的布局文件
3.CommonView.java
复用布局文件实例化。单独封装,接口回调。 避免重复写布局文件,避免重复实例化控件,避免重复设置监听方法
4.MainActivity.java
主界面实例化
复用的布局文件
<?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:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/common_button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/common_button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮2" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:id="@+id/common_button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="按钮3" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout>
2.layout_main.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="match_parent" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_margin="16dp" android:layout_weight="1" > </RelativeLayout> <!-- 在布局文件中引用复用的布局文件 --> <include layout="@layout/layout_common" /> </LinearLayout>
3.CommonView.java
复用布局文件实例化。单独封装,接口回调。 避免重复写布局文件,避免重复实例化控件,避免重复设置监听方法
package com.example.mytestapp; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; /** * 复用布局文件实例化 */ public class CommonView implements OnClickListener { // 接口 public interface OnCommonViewClick { public void onButton1Click(View v); public void onButton2Click(View v); public void onButton3Click(View v); } public void setListener(OnCommonViewClick listener) { this.listener = listener; } Context mContext; OnCommonViewClick listener; public CommonView(Context context) { this.mContext = context; } public Button button1, button2, button3; public CommonView init() { button1 = (Button) ((Activity) mContext).findViewById(R.id.common_button1); button2 = (Button) ((Activity) mContext).findViewById(R.id.common_button2); button3 = (Button) ((Activity) mContext).findViewById(R.id.common_button3); button1.setOnClickListener(this); button2.setOnClickListener(this); button3.setOnClickListener(this); return this; } @Override public void onClick(View v) { if (listener == null) return; switch (v.getId()) { case R.id.common_button1: listener.onButton1Click(v); break; case R.id.common_button2: listener.onButton2Click(v); break; case R.id.common_button3: listener.onButton3Click(v); break; default: break; } } }
4.MainActivity.java
主界面实例化
package com.example.mytestapp; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Toast; /* * 问题: * 1.如何用代码改变控件的文字或颜色? */ public class MainActivity extends Activity implements CommonView.OnCommonViewClick { int clickTimes = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_main); // 在这里实例化布局文件, 并实现监听接口方法 // 只需要一行代码就可以直接完成复用代码块的实例化 new CommonView(this).init().setListener(this); } @Override public void onButton1Click(View v) { clickTimes++; // 在这里实现对应点击事件的方法 Toast.makeText(this, "你点击了button" + clickTimes + "次", Toast.LENGTH_SHORT).show(); } @Override public void onButton2Click(View v) { // 在这里实现对应点击事件的方法 } @Override public void onButton3Click(View v) { // 在这里实现对应点击事件的方法 } }
相关文章推荐
- Android 多个界面复用一个布局文件(二)
- 为什么在eclipes为创建一个android布局文件在R中没有自动生成
- Android中View绘制优化二一---- 使用<include />标签复用布局文件
- 一个关于android界面布局的知识
- android用setcontentview来加载一个布局文件的本质原因
- Android学习---ListView和Inflater的使用,将一个布局文件转化为一个对象
- (转)Android中View绘制优化二一---- 使用<include />标签复用布局文件
- android继承一个布局文件实现自定义控件
- Android 多个页面复用一段布局文件
- Android同一个xml布局文件在不同中显示效果不同
- Android-使用XML布局文件实现游戏的开始界面
- 【Android 如何置底一个View(附 前置声明layout布局文件中的资源ID)】
- 一个Android登陆/注册XML布局文件代码
- Android中View绘制优化二一---- 使用<include />标签复用布局文件
- android getView方法不执行的一个原因是布局文件中没有给列表显示的位置
- Android通过在布局文件中设置include实现xml布局的复用
- Android 4.0 Launcher2源码分析——Laucher界面元素分解(主布局文件内容介绍)
- android如何在一个布局文件中包含另外一个布局文件(include属性)
- 新建 一个android工程,res/layout 下的xml布局文件无法预览
- Android中View绘制优化二一---- 使用<include />标签复用布局文件