a great functional custom WheelView with demo in dialog and bottomDialog,android 滚动选择控件,滚动选择器
=========
There are several attributes you can set:
| attr 属性 | description 描述 |
|---|---|
| lineColor | divider line color 分割线颜色 |
| itemVisibleNum | wheelview show item count 此wheelView显示item的个数 |
| textColorOuter | unSelected Text color 未选中文本颜色 |
| textSizeOuter | unSelected Text size 未选中文本字体大小 |
| textColorCenter | selected Text color 选中文本颜色 |
| textSizeCenter | selected Text size 选中文本字体大小 |
| isLoop | isLoop or no 滚轮是否首尾相连 |
| lineSpaceingDimens | item unit margin height 每个item单元格中文字距离上下的高度 |
| wheelGravity | align direction:left;center;right 对齐方向:靠左对齐 居中 靠右对齐 |
set WheelView items and init selected position
设置WheelView的数据和初始位置
set listener on WheelView that can get info when WheelView changed selected item.
对WheelView设置监听器,当WheelView 选中项改变时返回选中项的索引和值。
<wheelview.WheelView android:id="@+id/wheel_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" app:textColorCenter="@android:color/holo_blue_dark" app:lineSpaceingDimens="15dp" app:itemVisibleNum="3" app:lineColor="@android:color/holo_blue_dark" app:textSizeCenter="20dp" app:textSizeOuter="16dp" app:isLoop="false" app:textColorOuter="@android:color/darker_gray" />
WheelView wva = (WheelView) findViewById(R.id.wheel_view); wva.setItems(Arrays.asList(PLANETS),1);//init selected position is 1 初始选中位置为1 wva.setOnItemSelectedListener(new WheelView.OnItemSelectedListener() { @Override public void onItemSelected(int selectedIndex, String item) { Log.d(TAG, "selectedIndex: " + selectedIndex + ", item: " + item); } });
View outerView = LayoutInflater.from(this).inflate(R.layout.dialog_content_view, null); final WheelView wv = (WheelView) outerView.findViewById(R.id.wheel_view_wv); wv.setItems(getNumbers(),0);//init selected position is 0 初始选中位置为0 wv.setOnItemSelectedListener(new WheelView.OnItemSelectedListener() { @Override public void onItemSelected(int selectedIndex, String item) { Log.d(TAG, "[Dialog]selectedIndex: " + selectedIndex + ", item: " + item); } }); new AlertDialog.Builder(this) .setTitle("WheelView in Dialog") .setView(outerView) .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "selectedIndex: "+ wv.getSelectedPosition() +" selectedItem: "+ wv.getSelectedItem(), Toast.LENGTH_SHORT).show(); } }) .show();
View outerView1 = LayoutInflater.from(this).inflate(R.layout.dialog_select_date_time, null); //日期滚轮 final WheelView wv1 = (WheelView) outerView1.findViewById(R.id.wv1); //小时滚轮 final WheelView wv2 = (WheelView) outerView1.findViewById(R.id.wv2); //分钟滚轮 final WheelView wv3 = (WheelView) outerView1.findViewById(R.id.wv3); final TimeRange timeRange = getTimeRange(); wv1.setItems(Common.buildDays(timeRange),0); wv2.setItems(Common.buildHourListStart(timeRange),0); wv3.setItems(Common.buildMinuteListStart(timeRange),0); //联动逻辑效果 wv1.setOnItemSelectedListener(new WheelView.OnItemSelectedListener() { @Override public void onItemSelected(int index,String item) { List hourStrList = Common.buildHoursByDay(wv1, timeRange); int newIndexHour = hourStrList.indexOf(wv2.getSelectedItem()); wv2.setItems(hourStrList,newIndexHour); List minStrList = Common.buildMinutesByDayHour(wv1, wv2, timeRange); int newIndexMin = minStrList.indexOf(wv3.getSelectedItem()); wv3.setItems(minStrList,newIndexMin); } }); wv2.setOnItemSelectedListener(new WheelView.OnItemSelectedListener() { @Override public void onItemSelected(int index,String item) { List minStrList = Common.buildMinutesByDayHour(wv1, wv2, timeRange); int newIndexMin = minStrList.indexOf(wv3.getSelectedItem()); wv3.setItems(minStrList,newIndexMin); } }); TextView tv_ok = (TextView) outerView1.findViewById(R.id.tv_ok); TextView tv_cancel = (TextView) outerView1.findViewById(R.id.tv_cancel); //点击确定 tv_ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { bottomDialog.dismiss(); String selectDateTimeStrToShow; String mSelectDate = wv1.getSelectedItem(); String mSelectHour = wv2.getSelectedItem(); String mSelectMin = wv3.getSelectedItem(); String time = mSelectHour + mSelectMin; time = Common.timeToStr(Common.dateTimeFromCustomStr( mSelectDate, time)); selectDateTimeStrToShow = mSelectDate + " " + time; Toast.makeText(MainActivity.this, "selectDateTime: "+selectDateTimeStrToShow, Toast.LENGTH_SHORT).show(); } }); //点击取消 tv_cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { bottomDialog.dismiss(); } }); //防止弹出两个窗口 if (bottomDialog !=null && bottomDialog.isShowing()) { return; } bottomDialog = new BottomDialog(this, R.style.ActionSheetDialogStyle); //将布局设置给Dialog bottomDialog.setContentView(outerView1); bottomDialog.show();//显示对话框