Android NumberPicker探析
来源:互联网 发布:汽车修理学习软件 编辑:程序博客网 时间:2024/05/21 02:36
最近项目遇到NumberPicker,原生的显示很不让人满意,需要做些修改,
一、基本设置:
不用多说,
np.setMinValue(0);np.setMaxValue(60);np.setValue(0);因为框内是个EditText,若要避免点击编辑弹出输入法,可设置如下
np.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);
如要改变显示数据,如下
String []cityArr={"北京","上海","深圳"};np.setDisplayedValues(cityArr);
获取选取结果
np.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { // Toast.makeText(MainActivity.this,"oldVal:::"+oldVal+"newVal::::"+newVal,Toast.LENGTH_SHORT).show(); Log.e("number", "oldVal:::"+oldVal+"newVal::::"+newVal); } });
如要隐藏两条横线,可利用反射找到NumberPicker的mSelectionDivider属性,这个属性是个Drawable类
可设置其drawable为透明从而隐藏,如下
setNumberPickerDividerColor(np);
//利用反射,将分割线颜色设置为透明 private void setNumberPickerDividerColor(NumberPicker numberPicker) { NumberPicker picker = numberPicker; Field[] pickerFields = NumberPicker.class.getDeclaredFields(); for (Field field : pickerFields) { if (field.getName().equals("mSelectionDivider")) {//mSelectionDivider是一个drawable field.setAccessible(true); try { //设置分割线的颜色值 field.set(picker, new ColorDrawable(Color.TRANSPARENT)); // field.set(picker, new Div) } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (Resources.NotFoundException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } break; } } }
如要设置框内字体颜色
可自定义一个类继承NumberPicker
public class MyNumberPicker extends NumberPicker{ public MyNumberPicker(Context context) { super(context); } public MyNumberPicker(Context context, AttributeSet attrs) { super(context, attrs); } public MyNumberPicker(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public void addView(View child) { super.addView(child); changeTextColor(child); } @Override public void addView(View child, int index, ViewGroup.LayoutParams params) { super.addView(child, index, params); changeTextColor(child); } private void changeTextColor(View view) { if(view instanceof EditText){ ( (EditText)view ).setTextColor(Color.parseColor("#ff0000")); } }}
当然,这些还是不能满足千奇百怪的个性化需求,如增加显示条目,自定义选中字体颜色 等等,还需努力!!!!
0 0
- Android NumberPicker探析
- Android NumberPicker
- Android自己定义NumberPicker
- Android自己定义NumberPicker
- Android数字选择器-NumberPicker
- Android数字选择器-NumberPicker
- Android的NumberPicker
- Android数字选择器-NumberPicker
- Android 原生NumberPicker
- Android NumberPicker 使用
- Android 自定义NumberPicker
- Android NumberPicker滚动字符串
- NumberPicker
- NumberPicker
- NumberPicker
- Android 控件 数值选择器 NumberPicker
- Android的NumberPicker数量选择器
- android自定义时间控件NumberPicker
- java和python互相调用
- Java用数组实现顺序队列
- redis系列 ---简单介绍
- 第15周程序阅读6
- HDU 3465 线段树
- Android NumberPicker探析
- hdu 5444 继续二叉查找树
- mysql删除数据
- ANR in an IntentService with its own process
- Android ViewPager的适配器PagerAdapter的一般写法
- 猜数字游戏
- spark 1.6.1安装
- 20150427堆排序、网页、字符串简介
- windows下QT各版本简介