Bigkoo / Android-PickerView

This is a picker view for android , support linkage effect, timepicker and optionspicker.(时间选择器、省市区三级联动)
Apache License 2.0
13.42k stars 3.44k forks source link

WheelView不能单独设置center的字体为加粗 #963

Closed slovenl closed 3 years ago

slovenl commented 3 years ago

现使用反射可以单独设置中间区域和边缘区域的样式

slovenl commented 3 years ago

~

guochuanpei commented 3 years ago

通过反射拿到WheelView类里面的paintCenterText和paintOuterText变量就可以改变字体粗细还有字体样式了

private void getField(WheelView wheelView) {
        try {
            Field centerText = wheelView.getClass().getDeclaredField("paintCenterText");
            Field outerText = wheelView.getClass().getDeclaredField("paintOuterText");
            centerText.setAccessible(true);
            outerText.setAccessible(true);
            Paint paintCenterText = (Paint) centerText.get(wheelView);
            Paint paintOuterText = (Paint) outerText.get(wheelView);
            if (paintCenterText != null) {
                paintCenterText.setFakeBoldText(true);
            }
            if (paintOuterText != null) {
                paintOuterText.setFakeBoldText(true);
            }
            if (paintCenterText != null) {
                paintCenterText.setTypeface(Typeface.DEFAULT);
            }
            if (paintOuterText != null) {
                paintOuterText.setTypeface(Typeface.DEFAULT);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } 
HeyBean-X commented 1 year ago

为啥我反射也没有效果?

slovenl commented 1 year ago

来信已受到,祝您心情愉快!