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

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);
    }

    @Override
    public 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"?>

<LinearLayout
    xmlns: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.TitleLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></activitytest.example.com.uiwidgettest.TitleLayout>

</LinearLayout>
时间: 2024-08-24 16:24:34

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

《Android第一行代码》笔记

学习Android开发差不多有两年时间了,期间也做了大大小小的一些项目.近来抽出闲暇想把Android基础强化一下,之前在网上看到了郭霖郭大神的几篇博客,从中受益不少.于是花了近一周时间看完了郭神的一本Android教材--<Android第一行代码>.这本书相比其他教材个人感觉更为基础,内容很实用.看完之后我也有一些收获,学到了一些可以很好的运用到实际中的Android小技巧,下面从中选出我认为很有价值的地方做个记录.同时欢迎各位指正补充~~ 1.查看当前界面处于哪个Activity. 很多

Android第一行代码之制作简易版新闻应用

我是跟着<Android第一行代码>写代码的,想写个博来加深印象一点 一.添加依赖库RecyclerView 在app下的build.gradle中的dependencies添加一句:(添加后要sync now) implementation 'androidx.recyclerview:recyclerview:1.0.0' 二.新建一个新闻类News.java 1 public class News { 2 private String title;//新闻标题 3 private Str

最常用和最难用的控件--ListView(Android第一行代码)

由于手机屏幕空间都比较有限,能够一次性在屏幕上显示的内容并不多,当我们的程序中有 大量的数据需要展示的时候,就可以借助 ListView 来实现.ListView 允许用户通过手指上下 滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕. 1.ListView 的简单用法首先新建一个 ListViewTest 项目,并让 ADT 自动帮我们创建好活动.然后修改activity_main.xml 中的代码,如下所示: <LinearLayout xmlns:android=&qu

《Android第一行代码》学习记录008 - 创建自定义控件

一.关于View与布局,首先上图 从图中可以看到: View是Android中最基本的UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这个区域的各种事件: ViewGroup是一种特殊的View,它可以包含很多子View和子ViewGroup,是一种用于放置控件和布局的容器: 我们所使用的所有控件都是直接或间接继承View的,各种控件其实就是在View的基础上添加了各自的功能: 所有布局都是直接继承自ViewGroup的: 二.定义自定义控件需要: 自定义控件的布局文件: 自定义控件的类: 以

《Android第一行代码》学习记录007 - 4种基本布局

一.关于布局 布局是用于放置控件的容器 布局可以嵌套,所以可以通过布局完成比较复杂的界面实现 二.4种布局方式总览 LinearLayout: 即线性布局,非常常用 RelativeLayout: 即相对布局,非常常用 FrameLayout: 即桢布局,应用场景比LinearLayout和RelativeLayout少很多 TableLayout: 即表格布局,不常用 三.LinearLayout需要注意的地方 1.关于布局方向,因为是线性的,所以有方向,在布局页面中通过android:ori

《Android第一行代码》学习记录01

第一章 开始启程,你的第一行Android代码 1.对Android开发的环境搭建(Eclipse+Android SDK+ADT)进行了介绍,正好我的渣渣笔记本也跑不了Android Studio,Eclipse就先用着. 2.添加LogCat到Eclipse,步骤:[Window菜单]->[Show View]->[Other]->[LogCat] 3.重要的是介绍了Android的系统架构,见下图: Linux Kernel层: 基于Linux2.6内核,为Android各种硬件提

(Android第一行代码)UI开发

常见控件的使用方法   1.TextView(主要用于在界面上显示一段文本信息).     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"                  android:layout_width="match_parent"                   android:layout_height="match_parent&q

Android第一行代码学习笔记七---活动的生命周期

@1.返回栈 Android中的活动是可以层叠的,我们每启动一个新的活动,就会覆盖在原活动之上,然后点击Back键就会销毁最上面的活动,下面一个活动就会重新显示出来. Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(Back Stack).栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置.而当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,

Android第一行代码学习笔记三---在活动中使用Menu

在活动中使用Menu: 如果你活动中大量的菜单需要显示,这个·时候·界面·设计就会比较尴尬,Android给我们提供了一种方式,可以让菜单都能得到展示的同时,还能不占用任何空间.· res目录下新建一个menu文件夹,右击res目录->New->Directory,输入文件名menu,点击OK,接着在这个文件夹下.新建一个菜单文件,右击menu文件夹->New->Menu resource file.文件名输入main. 打开文件main.xml,输入如下代码: <?xml