美文网首页
自定义控件之导航栏的实现

自定义控件之导航栏的实现

作者: 26小瑜儿 | 来源:发表于2019-10-13 23:08 被阅读0次

我们先看一下实现效果:

使用xml自定义控件


image.png

使用代码自定义控件


image.png
image.png

首先我们创建一个工程

创建完毕之后再创建一个类来管理我们自定义的控件。

由于我们的控件水平方向分布的,因此比较适合使用线性布局
如下:我们创建一个类继承于LinearLayout用于管理自定义控件

image.png

然后我们需要实现父类LinearLayout的构造方法,并在构造方法中编写一个函数初始化我们自定的控件


image.png

注:此处为了避免init()函数的重复使用,我们将构造函数做了改动,只在第二个构造方法里调用init();方法

我们先来为我们的自定义控件初始化一些属性,并用代码的方式实现自定义控件。
image.png

然后我们在style里面将parent属性设置为NoActionBar以显示我们后来设置的导航条。


image.png

然后Main函数里面创建并调用它


image.png

注:以下这种方式将我们定义的bar控件作为Activity的主视图,但是会使该控件的长和宽全部变成match_parent


image.png

用xml创建如下:

image.png
自定义属性步骤如下:
image.png

(1)在values里面创建一个resource file 命名为navigation


image.png

(2)使用declare-styleable关键字修饰
(3)添加属性名称和对应的值的类型


image.png
(4)获取xml中的属性和值
注:使用对应get方法从TypedArray中取出对应的属性的值

TypedArray是一个通过上下文的对象 context.obtainStyledAttributes(AttributeSet,int[],int,int)方法或者context.obtainAttributes(AttributeSet,int[]) 获取到的数组数值的容器。确保使用完 TypedArray 对象之后,调用TypedArray对象的recycle()方法回收资源。通常通过它的obtainStyledAttributes方法获取到相应位置的数值。;

image.png

调用:


image.png

再回到代码的方式创建:
首先 ,在我们定义的管理自定义控件的类中编写函数以设置控件的属性


image.png
image.png
image.png

然后编写一个函数实现代码方式创建自定义控件,并在主函数中调用该函数实现创建。使主函数看起来简洁美观。

image.png

将继承改为RelativeLayout


image.png

然后我们编写函数为按钮设置标题、以及位置


image.png
image.png

然后我们为按钮添加点击事件

注意!!此处是重难点
第一步,定义一个接口,监听按钮的点击事件


image.png

第二步,记录监听按钮事件的对象


image.png

然后我们为按钮添加点击事件,把相应的事件传出去


image.png
我们在MainActivity中将监听者设置为控件本身:
image.png

那么我们就需要继承我们定义的接口,并实现接口的方法


image.png
感悟:
这个简书写的是真滴爽,视频又刷了一边,收获满满!!

相关文章

网友评论

      本文标题:自定义控件之导航栏的实现

      本文链接:https://www.haomeiwen.com/subject/gprkmctx.html