Android NumberPicker更改文本颜色

时间:2015-12-02 09:19:42

标签: android numberpicker

我是Android新手,我正在为我的应用中的一项活动实施NumberPicker。以下是我的代码的摘录:

picker = (NumberPicker)findViewById(R.id.order_confirm_bring_time_minute_picker);
picker.setMinValue(15);
picker.setMaxValue(120);
picker.setWrapSelectorWheel(false);
setNumberPickerTextColor(picker, android.R.color.black);

public boolean setNumberPickerTextColor(NumberPicker numberPicker, int color)
{
    final int count = numberPicker.getChildCount();
    for(int i = 0; i < count; i++){
        View child = numberPicker.getChildAt(i);
        if(child instanceof EditText){
            try{
                Field selectorWheelPaintField = numberPicker.getClass()
                        .getDeclaredField("mSelectorWheelPaint");
                selectorWheelPaintField.setAccessible(true);
                ((Paint)selectorWheelPaintField.get(numberPicker)).setColor(color);
                ((EditText)child).setTextColor(color);
                numberPicker.invalidate();
                return true;
            }
            catch(NoSuchFieldException e){
                Log.d("setNumberPickerTextColor", "NoSuchFieldException");
            }
            catch(IllegalAccessException e){
                Log.d("setNumberPickerTextColor", "IllegalAccessException");
            }
            catch(IllegalArgumentException e){
                Log.d("setNumberPickerTextColor", "IllegalArgumentException");
            }
        }
    }
    return false;
}

我查看了this post setNumberPickerTextColor方法。但它似乎不起作用,因为我将我的颜色设置为变为黑色,但它不再可见。如果我不使用setNumberPickerTextColor方法,那么我的默认颜色是白色,当我在NumberPicker的EditText字段中突出显示文本时可以看到。

color not changed

当颜色未更改时,这是NumberPicker的屏幕截图。

color changed to black

这是NumberPicker的屏幕截图,当颜色变为黑色或任何其他颜色时(我已经过测试,结果相同)。

有没有办法在我的NumberPicker中自定义文本颜色?此外,我知道这是一个不同的问题,但顶部和底部“条形”的颜色也是因为它们不适合我的应用程序的颜色主题。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要将已解析的颜色传递给setTextColor方法,而不是资源ID。

((EditText)child).setTextColor(getResources().getColor(color));