PickerView現在在大多數App都有使用到,例如設置時間的時候,或者選擇地區的時候,使用PickerView來實現很實用,在底部彈出個對話框,接着進行選擇就可以了,而且OptionsPickerView還支持三級聯動,支持自定義佈局等功能,接下來就簡單的用代碼實現一個小Demo:
首先就是要添加依賴啦,具體的版本自己選擇
//實際引入請把"3.x"替換成具體版本號,最新版本號請以GitHub上面提供的爲準
implementation'com.contrarywind:Android-PickerView:3.x'
然後在佈局中定義一個Button,然後爲這個Button設置點擊事件,定義數據,把數據加入到List中,我這邊是根據時間來定義的,把數據寫死了,也有其他更好的方法,可以問度娘
final List<String> options1Items = new ArrayList<>();
options1Items.add(getResources().getString(R.string.morning));
options1Items.add(getResources().getString(R.string.afternoon));
final List<String> options2Items = new ArrayList<>();
for (int i = 0; i <= 12; i++) {
if (i < 10) {
options2Items.add("0" + i);
} else {
options2Items.add(i + "");
}
}
final List<String> options3Items = new ArrayList<>();
for (int i = 0; i < 60; i++) {
if (i < 10) {
options3Items.add("0" + i);
} else {
options3Items.add(i + "");
}
}
接着就是重點了,構建一個OptionsPickerView
OptionsPickerView pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
if (getResources().getString(R.string.monning_text).equals(options1Items.get(options1))){
text_12 =options2;
}else {
text_12 = 12 + options2;
}
//網絡請求
getP().drinkWaterSetting(token, userId, "", "1", text_12 +
":"+options3Items.get(options3), "", "2");
Log.e("SHAN", "onOptionsSelect: " + userId );
showTs("添加成功");
}
})
//設置選中項文字顏色
.setTextColorCenter(getResources().getColor(R.color.black_333333))
//設置文字大小
.setContentTextSize(15)
//設置彈框的標題
.setTitleText(getResources().getString(R.string.set_time))
//設置點擊其他區域取不取消彈窗
.setOutSideCancelable(false)
//設置取消文字的顏色
.setCancelColor(getResources().getColor(R.color.black_333333))
//設置確定文字的顏色
.setSubmitColor(getResources().getColor(R.color.black_333333))
//設置標題文字的顏色
.setTitleColor(getResources().getColor(R.color.black_333333))
.setSubCalSize(15)
.setTitleSize(18)
.build();
//這裏要把數據Set進去
pvOptions.setNPicker(options1Items, options2Items, options3Items);
//最後一定要調用show方法,不然顯示不出來
pvOptions.show();
代碼大概就是這樣,效果圖如下,OptionsPickerView還有很多樣式可以設置,比如自定義標題欄等等,這些我就不一一列舉了,大家可以根據自己的需求去設計。