【Android-布局复用】 多个界面复用一个布局文件(一)
1.layout_common.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: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-布局复用】 多个界面复用一个布局文件(一)的更多相关文章
- Android 手机卫士--实现设置界面的一个条目布局结构
本文地址:http://www.cnblogs.com/wuyudong/p/5908986.html,转载请注明源地址. 本文以及后续文章,将一步步完善功能列表: 要点击九宫格中的条目,需要注册点击 ...
- 【Android-布局复用】 多个界面复用一个布局文件(二)
多个界面复用一个布局界面 ,如何找到复用布局文件中的控件的id? 举个栗子: 1. layout_common.xml 复用的布局文件,如何找到button 的id? <?xml versio ...
- Android性能优化之中的一个 布局优化
本文为Android性能优化--布局优化,主要介绍使用抽象布局标签(include, viewstub, merge).去除不必要的嵌套和View节点.降低不必要的infalte及其它Layout方面 ...
- android界面设计之布局管理
谈到android界面设计,各种布局样式不得不提!传统的布局方式有6种,我们会一一介绍. 在android studio2.2版本之后出现了一款超棒的布局方式,真正意义上的所见即所得,后面我们也会讲到 ...
- freemarker实现通用布局的模板拆分与复用
原文:http://www.hawu.me/coding/733 一.基础页面布局 假设我们项目页面的通用布局如下图所示: 实现这样的布局的基本html代码如下: XHTML ...
- Android 手机卫士--导航界面1的布局编写
本文地址:http://www.cnblogs.com/wuyudong/p/5943005.html,转载请注明出处. 本文实现导航界面1的布局的实现,效果如下图所示: 首先分析所使用的布局样式: ...
- android 引入一个布局库后该有的操作
背景 引入一个布局库:com.zhy:percent-support-extends 然后sync now 成功了,也就是同步成功了. 然而开始使用的时候报告了: The following clas ...
- Android笔记——在布局文件中插入另一个布局文件
假如有一个布局文件A.xml想把另外一个布局文件B.xml引进其布局,则可以通过下面的代码 <include layout="@layout/B" />
- Android Studido下的应用性能优化总结--布局优化
前言:一个应用的成功=产品设计*性能 ,再此我们不讨论一个应用的设计,那交给我们可爱又可恨的产品经理和UI设计师来决定!所以这里分步骤讨论如何提升一个应用的性能,这里先探讨布局优化问题. 布局优化 避 ...
随机推荐
- 添加 godoc 模块
获取godoc源码go get -d golang.org/x/tools/cmd/godoc 或 go get golang.org/x/tools/cmd/godoc 如果 下不到源码,就用43服 ...
- mybatis 的一对一关联查询association
现在项目的列表查询数据需要查一个总数count, 如果直接写在同一个sql里面,会导致查询速度很慢, 因此,想到使用关联查询,例子如下: 附上代码: 其中遇到的坑哟: 1.association中的s ...
- 剑指offer19:按照从外向里以顺时针的顺序依次打印出每一个数字,4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
1 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印 ...
- Java并发与多线程教程(3)
Java中的锁 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂.因为锁(以及其它更高级的线程同步机制)是由synchronized同步 ...
- Win10怎么添加开机启动项?Win10添加开机自动运行软件三种方法
Win10管理开机启动项的方法相信大家已经非常熟悉,msconfig命令各系统都通用,那么很多用户发觉Win10和Win7 XP等系统不同,没有启动文件夹,那么我们怎么添加开机启动项呢?如晨软件或程序 ...
- Signalr Vue Echarts绘制实时CPU使用率
后端基于Asp.net webapi,前端Vue,前后端分离,该demo仅做演示,实现的细节可以自己优化 Echarts:4.2.1 可参考 官网 Jquery:3.4.1 Signalr:2.4. ...
- 关于如何查看 MySQL 信息、查看Oracle 版本
方法一: 进入mysql cmd, mysql -u root status; 将显示当前mysql的version的各种信息. 方法二: 还是在mysql的cmd下,输入: select versi ...
- 3. Java开发环境的搭建:安装JDK,配置环境变量
1.安装JDK开发环境 下载网站:http://www.oracle.com/ 开始安装JDK: 修改安装目录如下: 确定之后,单击“下一步”. 注:当提示安装JRE时,可以选择不要安装. 2.配置环 ...
- 使用XPath爬取网页数据
我们以我的博客为例,来爬取我所有写过的博客的标题. 首先,打开我的博客页面,右键“检查”开始进行网页分析.我们选中博客标题,再次右键“检查”即可找到标题相应的位置,我们继续点击右键,选择Copy,再点 ...
- # 机器学习算法总结-第一天(KNN、决策树)
KNN算法总结 KNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别.(监督) k近邻算法(knn)是一种基本的分类与回归的算法,k-mea ...