在项目中我们经常会用到Spinner(下拉框)来做选择,常用比如筛选框.选择项 今天给搭建分享一个特别好用的三方框架NiceSpinner的使用方法
第一步.添加依赖库
implementation \'com.github.arcadefire:nice-spinner:1.4.4\'
第二步.创建一个xml布局
<FrameLayoutandroid:layout_width=\"wrap_content\"android:layout_height=\"wrap_content\"android:layout_gravity=\"center|end\"android:background=\"@drawable/spinner_shape\"android:padding=\"2dp\"><org.angmarch.views.NiceSpinnerandroid:id=\"@+id/sp_setting_camera_angle\"android:layout_width=\"100dp\"android:layout_height=\"25dp\"android:textSize=\"13sp\"app:arrowTint=\"@color/blue\"app:textTint=\"@color/black\" /></FrameLayout>
第三步.初始化使用
private val spinnerAngle = LinkedList(listOf( \"0\", \"90\", \"180\", \"270\" ))initSpinner(sp_setting_camera_angle, spinnerAngle)//填充数据sp_setting_camera_angle.selectedIndex = 1//设置默认下标,不设置的为0
private fun initSpinner(spinner: NiceSpinner, list: List<String>) {spinner.attachDataSource(list)spinner.setPadding(0, 0, 0, 0)spinner.gravity = CENTER}
第四步.点击监听方法
sp_setting_camera_angle.setOnSpinnerItemSelectedListener { _, _, position, _ ->setting.cameraAngle = position.toString()when (position) {0 -> //下标选中后1 ->2 ->3 ->}}
这里指的注意的是内边距设置下,xml设置是无效的,不设置的话,在高度较小的情况下,文字容易被覆盖