youth5201314 / Pickerview
Programming Languages
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:[email protected]'
}
或者引用本地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的图片得看下面: