android UI进阶之自定义组合控件

news/2024/5/20 12:05:48

今天和大家分享下组合控件的使用。很多时候android自定义控件并不能满足需求,如何做呢?很多方法,可以自己绘制一个,可以通过继承基础控件来重写某些环节,当然也可以将控件组合成一个新控件,这也是最方便的一个方法。今天就来介绍下如何使用组合控件,将通过两个实例来介绍。

第一个实现一个带图片和文字的按钮,如图所示:

整个过程可以分四步走。第一步,定义一个layout,实现按钮内部的布局。代码如下:


这个xml实现一个左图右字的布局,接下来写一个类继承LinearLayout,导入刚刚的布局,并且设置需要的方法,从而使的能在代码中控制这个自定义控件内容的显示。代码如下:


第三步,在需要使用这个自定义控件的layout中加入这控件,只需要在xml中加入即可。方法如下:


注意的是,控件标签使用完整的类名即可。为了给按钮一个点击效果,你需要给他一个selector背景,这里就不说了。

  最后一步,即在activity中设置该控件的内容。当然,在xml中也可以设置,但是只能设置一个,当我们需要两次使用这样的控件,并且显示内容不同时就不行了。在activity中设置也非常简单,我们在ImageBt这个类中已经写好了相应的方法,简单调用即可。代码如下:


这样,一个带文字和图片的组合按钮控件就完成了。这样梳理一下,使用还是非常简单的。组合控件能做的事还非常多,主要是在类似上例中的ImageBt类中写好要使用的方法即可。

再来看一个组合控件,带删除按钮的EidtText。即在用户输入后,会出现删除按钮,点击即可取消用户输入。

定义方法和上例一样。首先写一个自定义控件的布局:


 实现输入框右侧带按钮效果,注意将按钮隐藏。然后写一个EditCancel类,实现删除用户输入功能。这里用到了TextWatch这个接口,监听输入框中的文字变化。使用也很简单,实现他的三个方法即可。看代码:


  在TextWatch接口的afterTextChanged方法中对文字进行判断,若长度为0,就隐藏按钮,否则,显示按钮。

   另外,实现ImageButton(即那个叉)的点击事件,删除输入框中的内容,并隐藏按钮。

后面两步的实现就是加入到实际布局中,就不再写出来了,和上例的步骤一样的。最后显示效果如图:

 学会灵活的使用组合控件,对UI开发会有很大帮助。有什么问题可以留言交流~

原文地址:http://www.cnblogs.com/noTice520/archive/2011/08/07/2130359.html


http://www.niftyadmin.cn/n/4472230.html

相关文章

2.3 打包、压缩命令和文本编辑器VI

1. 打包和压缩命令随着压缩技术的发展,Linux环境下提供的压缩指令和格式开始变多。为了便于用户区分不同压缩文件使用的不同压缩技术,进而使用合适的指令进行操作,一般使用后缀标识文件在压缩或打包过程中所使用的压缩技术。*.Z // compress程…

程序员怎样渡过中年危机?

真的是危机? 直接上图,这特么哪里是危机,明明是金矿啊。直接用人民币直接消除了所谓的中年危机? 但是,你说我明明感觉很焦虑,很烦躁,一眼就看到底了,我一辈子就是一个程序员&#xf…

图片上动态添加文字

android上在图片上动态添加文字的方法: [java] view plaincopy public Bitmap drawTextToBitmap(Context gContext, int gResId, String gText) { Resources resources gContext.getResources(); float scale resources.getDisplayMetrics().de…

BZOJ3718[PA2014]Parking——树状数组

题目描述 你的老板命令你将停车场里的车移动成他想要的样子。停车场是一个长条矩形,宽度为w。我们以其左下角顶点为原点,坐标轴平行于矩形的边,建立直角坐标系。停车场很长,我们可以认为它一直向右边伸展到无穷远处。车都是边平行…

Android控件之Chronometer(定时器)

Chronometer是一个简单的定时器,你可以给它一个开始时间,并以此定时,或者如果你不给它一个开始时间,它将会使用你的时间通话开始。默认情况下它会显示在当前定时器的值的形式“分:秒”或“H:MM:…

shell之删除elasticsearch30天以前的索引

在elasticsearch的运维工作中,由于es每天会产生大量的日志,如果一直保存不进行删除的话,再大的磁盘空间也会不够用,由此需要删除满足条件的index,从而释放磁盘空间;我们公司的es要求只保留30天的日志即可&a…

Metricbeat 参考指南(步骤3:在Elasticsearch中加载索引模板)

步骤3:在Elasticsearch中加载索引模板 在Elasticsearch中,索引模板用于定义设置和映射,以确定如何分析字段。 Metricbeat推荐的索引模板文件是由Metricbeat包安装的,如果你接受metricbeat.yml配置文件中的默认配置,那么…

android手机屏幕适配补充

如何将一个应用程序适配在不同的手机上&#xff0c;虽然这不算是一个技术问题&#xff0c;但是对于刚刚做屏幕的开发人员来说&#xff0c;还真不是一件多么简单的事情。 首先&#xff1a;你需要在AndroidManifest.xml文件的<manifest>元素如下添加子元素 <supports-sc…