PickerView一种全新的选择器 如果对你有帮助请star哦!
现在的绝大数app的地址选择器都是三级联动或者滚轮选择的形式,刚刚公司开发的项目弄了个新的交互,当然不仅仅可以用于省市区的选择, 只要是类似城市选择的层级形式都行,比如电商菜单分类啊等等。目前最多支持4级菜单。
控件比较冷门,所以就没有封装的特别精细,如果不符合你们可以自行修改哈!我就提供一种思路
联系方式
- 如果遇到问题和建议欢迎在给我发送邮件或者加入qq群,希望让这个工程越来越完善。
##PickerData方法
方法名 | 描述 |
---|---|
setFirstDatas(String[] mFirstDatas) | 第一级菜单数组 |
setSecondDatas(Map<String , String[]> mSecondDatas) | 第二级菜单map,key对应上一级value |
setThirdDatas(Map<String , String[]> mSecondDatas) | 第三级菜单map,key对应上一级value |
setFourthDatas(Map<String , String[]> mSecondDatas) | 第四级菜单map,key对应上一级value |
setHeight(int height) | 设置选择器高度 |
setPickerTitleName(String pickerTitleName) | 设置选择器标题 |
setInitSelectText(...) | 设置默认显示的数据(参数顺序对应层级顺序,参数个数可以自己选择) |
getFirstText() | 获取第一级选择结果 |
getSecondText() | 获取第二级选择结果 |
getThirdText() | 获取第三级选择结果 |
getFourthText() | 获取第四级选择结果 |
getSelectText() | 获取完整选择的结果(拼接后结果) |
getCurrDatas(int index,String currText) | 通过当前key获取指定层级的values数组 |
##PickerView方法
方法名 | 描述 |
---|---|
PickerView(Activity context, PickerData pickerData) | 构造方法传入上下文和封装的数据 |
setOnPickerClickListener(OnPickerClickListener listener) | 设置点击事件 |
show(View view) | 显示选择器 |
dismiss() | 关闭选择器 |
##PickerView点击事件方法
方法名 | 描述 |
---|---|
OnPickerClick(PickerData pickerData) | 数据展示列表点击事件,实时返回选择结果 |
OnPickerConfirmClick(PickerData pickerData) | 点击确定按钮的回调事件,点击后自动关闭选择器,返回选择结果 |
##使用步骤
Step 1.PickerView
Gradle
dependencies{
compile 'com.youth.picker:pickerview:0.1.4@aar'
}
或者引用本地lib
compile project(':PickerView')
Step 2.代码实现
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//选择器数据实体类封装
PickerData data=new PickerData();
//设置数据,有多少层级自己确定
data.setFirstDatas(mProvinceDatas);
data.setSecondDatas(mCitisDatasMap);
data.setThirdDatas(mDistrictDatasMap);
data.setFourthDatas(new HashMap<String, String[]>());
//设置弹出框的高度
data.setHeight(高度);
//设置初始化默认显示的菜单(此方法可以选择传参数量1到4个)
data.setInitSelectText("河北省","石家庄市","平山县");
//初始化选择器
pickerView=new PickerView(this,data);
点击按钮View.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//显示选择器
pickerView.show(点击按钮View);
}
});
//选择器点击回调
pickerView.setOnPickerClickListener(new OnPickerClickListener() {
//选择列表时触发的事件(手动关闭)
@Override
public void OnPickerClick(PickerData pickerData) {
text.setText(pickerData.getSelectText());
pickerView.dismiss();//关闭选择器
}
//点击确定按钮触发的事件(自动关闭)
@Override
public void OnPickerConfirmClick(PickerData pickerData) {
text.setText(pickerData.getSelectText());
}
});
}
###修改字体颜色 在自己工程的color.xml中定义就行了!
列表和默认的提示颜色
<color name="picker_text_color">#878787</color>
选中颜色
<color name="picker_select_text_color">#03a9f4</color>
标题颜色
<color name="picker_title_text_color">#000000</color>
分割线颜色
<color name="picker_border_color">#e5e5e5</color>
###修改选中指示器颜色
由于控件比较冷门就没有封装的特别好,不过你可以在drawable文件夹里放入你想要的指示器图片(.9图片哦!),
命名tab_indicator.9.png就行了!不清楚怎么花9patch的图片得看下面: