博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android NumberPicker 修改分割线颜色和高度及字体颜色大小
阅读量:6278 次
发布时间:2019-06-22

本文共 2902 字,大约阅读时间需要 9 分钟。

(1)重写NumberPicker已达到修改显示字体颜色大小

public class TextColorNumberPicker extends NumberPicker {     public TextColorNumberPicker(Context context) {        super(context);    }     public TextColorNumberPicker(Context context, AttributeSet attrs) {        super(context, attrs);    }     public TextColorNumberPicker(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }     @Override    public void addView(View child) {        super.addView(child);        updateView(child);    }     @Override    public void addView(View child, int index,                        android.view.ViewGroup.LayoutParams params) {        super.addView(child, index, params);        updateView(child);    }     @Override    public void addView(View child, android.view.ViewGroup.LayoutParams params) {        super.addView(child, params);        updateView(child);    }     public void updateView(View view) {        if (view instanceof EditText) {            //这里修改显示字体的属性,主要修改颜色            ((EditText) view).setTextColor(Color.parseColor("#BAA785"));        }    }}

(2)修改分割线颜色,需要在初始化控件后,通过反射进行动态设置颜色。

**********注意:在NumberPicker 的 setDisplayedValues调用后调用如下方法:

1 private void setNumberPickerDividerColor(NumberPicker numberPicker) { 2         NumberPicker picker = numberPicker; 3         Field[] pickerFields = NumberPicker.class.getDeclaredFields(); 4         for (Field pf : pickerFields) { 5             if (pf.getName().equals("mSelectionDivider")) { 6                 pf.setAccessible(true); 7                 try { 8                     //设置分割线的颜色值 透明 9                     pf.set(picker, new ColorDrawable(this.getResources().getColor(android.R.color.transparent)));10                 } catch (IllegalArgumentException e) {11                     e.printStackTrace();12                 } catch (Resources.NotFoundException e) {13                     e.printStackTrace();14                 } catch (IllegalAccessException e) {15                     e.printStackTrace();16                 }17                 break;18             }19         }20     }

注意:修改分割线的高度:查看NumberPicker,找到mSelectionDividerHeight属性,修改:

1 // 分割线高度 2         for (Field pf : pickerFields) { 3             if (pf.getName().equals("mSelectionDividerHeight")) { 4                 pf.setAccessible(true); 5                 try { 6                     int result = 1; 7                     pf.set(picker, result); 8                 } catch (Exception e){ 9                     e.printStackTrace();10                 }11                 break;12             }13         }

 

(3)使用NumberPicker 注意:

1 // 禁止点击后打开键盘2 picker.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);3 // 设置最大值、最小值 已达到显示所有符合条件的数值4 picker.setMaxValue(array.length - 1);5 picker.setMinValue(0);

(4) List 转换为 Array[], 以便NumberPicker设置setDisplayedValues(String[]):

String[] array = new String[list.size()];list.toArray(array);

连接:

转载地址:http://btnva.baihongyu.com/

你可能感兴趣的文章
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>
DWR实现服务器向客户端推送消息
查看>>
js中forEach的用法
查看>>
Docker之功能汇总
查看>>
!!a标签和button按钮只允许点击一次,防止重复提交
查看>>
(轉貼) Eclipse + CDT + MinGW 安裝方法 (C/C++) (gcc) (g++) (OS) (Windows)
查看>>
还原数据库
查看>>
作业调度框架 Quartz.NET 2.0 beta 发布
查看>>
mysql性能的检查和调优方法
查看>>
项目管理中的导向性
查看>>
Android WebView 学习
查看>>