实现效果如下所示:
3. 小结
EditText配合ListPopupWindow组合实现Spinner的功能,使用起来倒是简单,逻辑也挺清晰的,但是如果界面上有三四个Spinner,那不是就得把类似的代码写上三四遍?
其实我们并不关心内部是用ListPopupWindow或者其它的控件来实现,也不想处理任何关于ListPopupWindow的细节。我们关心的只有Spinner的初始化、适配数据、Item选择事件(ItemClick事件),如果可以,就再加上Spinner的点击事件(Click或Touch事件)、自由控制Spinner的显示时机。
那有没有简单易用的方法,可以直接像使用系统的Spinner一样,来使用EditText和ListPopupWindow的组合呢?并且可以提供Spinner的点击事件?答案是肯定的,详情且看下一节。
三、自定义组合控件
在第二部分我们可以看出,我们的控件要满足以下两大功能:
- 像系统Spinner一样简单易用:初始化、适配数据、Item选择事件(ItemClick事件)
- 支持点击事件(Click或Touch事件),自由控制下拉框显示时机
由于控件源码稍长,就不贴出来了,有兴趣可以点击文末的Github链接,源码也比较简单,只是进行控件的组合,并提供相应的方法进行调用,下面主要介绍下使用方法。