Android 如何在启用的 NumberPicker 中更改所选数字的颜色
How to change color for selected number in enabled NumberPicker in Android
我想在 MyNumberPicker 上实现这个效果
到目前为止,我实现了一个 NumberPicker class 并更改了几个属性,但有趣的部分在这里:
public class NumberPicker extends android.widget.NumberPicker{
public NumberPicker(Context context, AttributeSet attrs) {
super(context, attrs);
}
@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);
}
private void updateView(View view) {
if(view instanceof EditText){
((EditText) view).setTextSize(getResources().getDimension(R.dimen.numberpicker_text_size));
((EditText) view).setTextColor(ContextCompat.getColor(getContext(), R.color.colorPrimaryDark));
}
}
但是我得到的效果是这样的:
我得到的所有文本都是蓝色的(选中、未选中、活动、非活动)如何仅在启用的 NumberPicker 和选中的值上获得这种蓝色?
感谢支持
使用您想要的属性创建 ColorStateList
。然后将它们应用于 EditText
final ColorStateList colors = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_selected},
new int[]{-android.R.attr.state_selected}
},
new int[]{selectedColorCode, defaultColor}
);
((EditText) view).setTextColor(colors);
我想在 MyNumberPicker 上实现这个效果
到目前为止,我实现了一个 NumberPicker class 并更改了几个属性,但有趣的部分在这里:
public class NumberPicker extends android.widget.NumberPicker{
public NumberPicker(Context context, AttributeSet attrs) {
super(context, attrs);
}
@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);
}
private void updateView(View view) {
if(view instanceof EditText){
((EditText) view).setTextSize(getResources().getDimension(R.dimen.numberpicker_text_size));
((EditText) view).setTextColor(ContextCompat.getColor(getContext(), R.color.colorPrimaryDark));
}
}
但是我得到的效果是这样的:
我得到的所有文本都是蓝色的(选中、未选中、活动、非活动)如何仅在启用的 NumberPicker 和选中的值上获得这种蓝色?
感谢支持
使用您想要的属性创建 ColorStateList
。然后将它们应用于 EditText
final ColorStateList colors = new ColorStateList(
new int[][]{
new int[]{android.R.attr.state_selected},
new int[]{-android.R.attr.state_selected}
},
new int[]{selectedColorCode, defaultColor}
);
((EditText) view).setTextColor(colors);