0.假设一个应用中标题栏控件都是共用的,如果每个activity都需要设置button,绑定方法,那代码就会很臃肿。那我们可以自定义控件,然后继承这个控件就行了。

自定义控件为TitleLayout,LayoutInflater.from(context).inflate(R.layout.title,this);可以实现动态加载。LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化的,类似于findViewById(),但是findViewById找的是xml布局文件下的具体widget控件(如Button、TextView等)。

1.控件实现

public class TitleLayout extends LinearLayout implements View.OnClickListener {public TitleLayout(Context context,AttributeSet attrs) {super(context, attrs);LayoutInflater.from(context).inflate(R.layout.title,this);Button titleBack = (Button) findViewById(R.id.title_back);Button titleEdit = (Button) findViewById(R.id.title_edit);titleBack.setOnClickListener(this);titleEdit.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.title_back:((Activity) getContext()).finish();break;case R.id.title_edit:Toast.makeText(getContext(),"you click this button",Toast.LENGTH_SHORT).show();break;}}
}

2.控件引用

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:weightSum="1"><activitytest.example.com.uiwidgettest.TitleLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"></activitytest.example.com.uiwidgettest.TitleLayout></LinearLayout>

android第一行代码-6.自定义控件的实现相关推荐

  1. Android build.gradle文件详解(转述自《Android第一行代码》第二版)

    Android build.gradle文件详解 1. 最外层目录下的build.gradle文件 1.1 repostories 1.2 dependencies 2. app目录下的build.g ...

  2. Android第一行代码学习思考笔记(碎片、广播、持久化技术和Android数据库)

    Android第一行代码学习思考笔记(碎片.广播.持久化技术和Android数据库 第四章 手机平板要兼顾--探究碎片 4.1碎片是什么(Fragment) 4.2碎片的使用方式 4.2.1碎片的简单 ...

  3. Android第一行代码-Activity

    文章目录 Android第一行代码 Activity 1.Activity基本用法 2.创建和加载布局 加载布局(在Activity中加载布局) 在AndroidManifest文件中注册(所有的ac ...

  4. Android第一行代码(第一行代码、活动)

    一.第一行代码 1.了解全貌 1.1Android的系统架构 Android的系统架构:Linux内核层.系统运行库层.应用框架层和应用层 1.Linux内核层 Android系统是基于Linux内核 ...

  5. Handler内存泄漏问题解决方案(Android,第一行代码,This Handler class should be static or leaks might occur)

    1 问题背景 博主最近在复习<第一行代码>的第10.2.2章节--在子线程中更新UI,书中给出的在UI主线程中用匿名内部类实现Handler的写法如下: private Handler h ...

  6. Android第一行代码第二版简要总结

    进入安卓的第一本书(简要概括) 第一章 了解大体Android 1.Android系统架构 Linux内核层:为Android设备的各种硬件提供了底层的驱动. 系统运行库层:通过c/c++库来提供主要 ...

  7. Android开发之LitePal数据库的使用(参考于《Android 第一行代码》)

    配置相关文件 在使用之前要进行相关配置,首先要在app.build.gradle中引入LitePal的依赖(下面最后一行代码) dependencies {implementation fileTre ...

  8. 《Android 第一行代码》十一章 Service学习笔记

    Android中Service学习笔记 Service的基本使用方法 Service的启动方式有两种,第一种是使用startService()和stopService()方法来启动和停止Service ...

  9. (Android第一行代码)活动的启动模式

    活动的启动模式 启动模式一共有四种,分别是 standard.singleTop. singleTask 和 singleInstance,可以在 AndroidManifest.xml 中通过给&l ...

  10. Android第一行代码——第三章:控件的使用方法5A-00-1A-C4-8C-55(2009+jjy)

    标题:这章主要学习如何控件的使用方法 1 TextView. 创建activity_main.xml中的代码 代码如下: <?xml version="1.0" encodi ...

最新文章

  1. 14_传智播客iOS视频教程_instancetype
  2. 想学新的编程语言?考虑下Go吧
  3. Go开发之路 -- Go语言基本语法 - 作业
  4. 20162311 算法复杂度-3
  5. 【编程好习惯】将常量放在“==”之前
  6. ONNX系列七 --- 在Python中使用可移植的ONNX AI模型
  7. c语言程序一些常见的不足,C语言常见错误分析及解决方法
  8. 应用安全的重要性!再怎么强调都不过分的5大理由
  9. jquery中的trigger和triggerHandler区别
  10. 【verilog教程】第3篇:verilog关键词
  11. Java图书管理系统
  12. 优化模型验证关键代码06:多行程旅行商问题(mTSP)
  13. python统计字符串中大写英文、小写英文、汉字、数字等个数
  14. 远程访问openwrt路由器+配置动态DNS
  15. openwrt路由表设置_OpenWrt路由器常用设置
  16. 如何优雅的编写前端代码
  17. 一文彻底看懂LightGBM
  18. 时间序列的数据分析(七):数据平稳性
  19. Linux 压缩文件和文件打包。
  20. 多人审批功能简单实现

热门文章

  1. ubuntu 11.10 因为gcc版本过高引起的错误,安装 gcc 4.4(转)
  2. 30天敏捷结果(14):要事第一
  3. 关于Kswapd的理解(一)
  4. 《System语言详解》——5. 语言元素
  5. K - 最少拦截系统(动态规划)
  6. 单源最短路(SPFA算法)
  7. oracle字符串转日期比较大小写,【varchar】oracle中比较日期大小日期定义的是varchar2类型的......
  8. c++ 开方_20款丨空调控制系统的三种打开方式
  9. 核函数(Kernel Function)与SVM
  10. 格雷码的生成详解(C++)(附格雷码对照表)