DatePicker自定义Numberpicker样式在更改后不起作用

时间:2013-04-25 14:37:13

标签: android custom-component

我有一个自定义日期选择器,可以扩展日期选择器。

我在加载组件时初始化了月份样式:

private void updateCustomStyle() {
    ViewGroup childPicker = (ViewGroup)
                findViewById(Resources.getSystem().getIdentifier("month" /*rest is:
                day, year*/, "id", "android"));

                EditText textview = (EditText)
                        childPicker.getChildAt(0);
                textview.setTextSize(35);
                textview.setTextColor(Color.GREEN);
                textview.invalidate();

}

在此之后加载了datepicker,月份字体大小更大,颜色为绿色。在我将月份滚动到另一个月之后问题发生了,我有一个我在初始化时定义的日期更改监听器:

this.init(agora.getYear(), agora.getMonth(), agora.getDate(),
            this.getOnDataChangedListener());

在数据更改监听器上,我有这个电话:

@Override
        public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            updateCustomStyle();
        }

但是在我滚动到另一个月后,它仍然会回到原来的风格。对此有何建议?

此方法适用于Android 3.1和4.0。 android 4.1.2及更高版本会出现问题。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

经过大量研究后,我发现你无法像以前的版本那样在Android 4.1.X上做那种选择风格。你可以做的是创建一个扩展NumberPicker的类并添加这段代码:

if (child instanceof EditText) {
        ((EditText) child).setTextSize(35);
}

但是你仍然无法为所选数字使用不同的样式,所以我做的是使用simonVT numberpicker(https://github.com/SimonVT/android-numberpicker),在一些自定义解决了问题之后。