自定义NumberPicker|自定义NumberPicker 修改默认字体颜色大小,选中字体颜色大小,分割线颜色,高度
【自定义NumberPicker|自定义NumberPicker 修改默认字体颜色大小,选中字体颜色大小,分割线颜色,高度】
文章图片
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.NumberPicker;
import java.lang.reflect.Field;
public class TextConfigNumberPicker extends NumberPicker {public TextConfigNumberPicker(Context context) {
super(context);
}public TextConfigNumberPicker(Context context, AttributeSet attrs) {
super(context, attrs);
}public TextConfigNumberPicker(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}@Override
public void addView(View child) {
this.addView(child, null);
}@Override
public void addView(View child, ViewGroup.LayoutParams params) {
this.addView(child, 0, params);
}@Override
public void addView(View child, int index, ViewGroup.LayoutParams params) {
super.addView(child, index, params);
updateView(child);
}private void updateView(View view) {
if (view instanceof EditText) {
//设置通用(默认)文字的颜色和大小
((EditText) view).setTextColor(getResources().getColor(R.color.whiter));
((EditText) view).setTextSize(13);
}
try {
//设置分割线大小颜色
Field mSelectionDivider = this.getFile("mSelectionDivider");
mSelectionDivider.set(this, new ColorDrawable(getResources().getColor(R.color.pickline)));
mSelectionDivider.set(this, 10);
} catch (Exception e) {
e.printStackTrace();
}
}//反射获取控件 mSelectionDivider mInputText当前选择的view
public Field getFile(String fieldName) {
try {
//设置分割线的颜色值
Field pickerFields = NumberPicker.class.getDeclaredField(fieldName);
pickerFields.setAccessible(true);
return pickerFields;
} catch (Exception e) {
e.printStackTrace();
}return null;
}//设置选中控件的style注意一点要在setOnValueChangedListener或 setOnScrollChangeListener,setOnScrollListener中调
// 用picker.performClick();
两种情况动画效果不同
//同时注意他的代用位置 要在当前控件初始化之后 否则获得不了
public void setMInputStyle(Float size) {
Field mInputText = this.getFile("mInputText");
try {
((EditText) mInputText.get(this)).setTextSize(size);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
注意设置选中控件的style 要在当前控件初始化之后 ,用法:
TextConfigNumberPicker numberPicker = dialog.findViewById(R.id.np);
numberPicker.setMInputStyle(16f);
//setOnValueChangedListener或 setOnScrollChangeListener,setOnScrollListener
numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
picker.performClick();
//刷新选中状态
}
});
推荐阅读
- SpringBoot调用公共模块的自定义注解失效的解决
- python自定义封装带颜色的logging模块
- 列出所有自定义的function和view
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- 自定义MyAdapter
- java|java b2b2c shop 多用户商城系统源码- config 修改配置
- Android自定义view实现圆环进度条效果
- iOS富文本为html时,修改默认字体颜色
- react-navigation|react-navigation 动态修改 tabBar 样式
- Flutter自定义view|Flutter自定义view —— 闯关进度条