在项目中我们经常会用到Spinner(下拉框)来做选择,常用比如筛选框.选择项 今天给搭建分享一个特别好用的三方框架NiceSpinner的使用方法
第一步.添加依赖库
implementation 'com.github.arcadefire:nice-spinner:1.4.4'
第二步.创建一个xml布局
1.创建Spinner样式
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- view背景色 -->
<solid android:color="@color/white" />
<!-- 边框颜色 宽度 -->
<stroke
android:width="1px"
android:color="@color/xian" />
<!-- 边框圆角 -->
<corners
android:radius="5dp"/>
</shape>
2.使用布局
<FrameLayout
android: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.NiceSpinner
android: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设置是无效的,不设置的话,在高度较小的情况下,文字容易被覆盖