首页 > 解决方案 > NumberPicker 对非 SDK 接口的限制

问题描述

我正在尝试创建一个这样的自定义 NumberPicker。

Class<?> numberPickerClass = null;
        try {
            numberPickerClass = Class.forName("android.widget.NumberPicker");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Field selectionDivider = null;
        try {
            if (numberPickerClass != null) {
                selectionDivider = numberPickerClass.getDeclaredField("mSelectionDivider");
            }
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }

        if (selectionDivider == null) {
            return;
        }

        try {
            selectionDivider.setAccessible(true);
            selectionDivider.set(this, null);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (Resources.NotFoundException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

但是,从 API29 开始,Android 对非 SDK 接口的访问进行了限制。他们建议改用 set/getDividerHeight。但我对 Android 非常陌生,我不知道如何更新我的代码。任何人都可以帮忙吗?谢谢!

标签: androidandroid-9.0-pienumberpickerandroid-number-picker

解决方案


推荐阅读