Android自定义组合控件:SherlockSpinner

那我们是否可以使用别的控件,来实现相同的功能呢?答案是肯定的,我们用EditText来接收点击事件,而在请求完数据之后,使用ListPopupWindow来显示下拉选项,选择EditText的原因主要有以下几点:

  • 默认在底部会有带颜色的横线,Material Design风格的EditText看起来效果很不赖
  • EditText可以方便的配置上、下、左、右四个位置的小图标,我们可以在右侧放置一个向下的三角箭头,使它看起来像一个系统的Spinner

而选择ListPopupWindow则是因为:

  • 可以方便的使用下拉列表
  • 可以自由设置锚点

1. XML布局

布局文件依旧很简单,只要一个简单的EditText,配上一个右侧的下拉图标:

<EditText    android:id="@+id/et_languages"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:gravity="right"    android:drawableRight="@drawable/ic_dropdown"    android:hint="Please Select..."/>

2. 代码中创建ListPopupWindow

此部分包含以下逻辑: