setCornerRadius не работает на Android 4.2.2

Я реализовал щепотку для увеличения ViewGroup, чьи дочерние представления имеют фоновые рисунки. После onScaleEnd я перерисовываю дочерние представления в новом масштабе, чтобы они были более четкими. Однако после повторного рисования в меньших масштабах радиусы закругленных углов становятся слишком большими, что придает прямоугольной форме неправильный вид. У меня есть код, который работает для изменения радиуса угла для всех форм, который отлично работает на моем Kindle Fire HD (на основе 4.0.3), но ничего не делает на моем телефоне Galaxy Nexus (4.2.2).

Примечание. Я НЕ изменяю объект для рисования, потому что я хочу, чтобы все элементы, основанные на этом ресурсе, меняли свой внешний вид, когда я это делаю.

Я посмотрел: программно изменить радиус угла вытяжки и несколько других сообщений , но ничто даже не намекает на различное поведение на разных устройствах.

Вот код:

    final LayerDrawable layerDrawable = (LayerDrawable) context.getResources().getDrawable(drawableId);
    final Drawable drawable = layerDrawable.findDrawableByLayerId(drawableLayerId);
    if (drawable instanceof GradientDrawable) {
        final float newRadius = nodeScale > SMALL_TREE_NODE_LAYOUT_THRESHOLD ? normalRadius : smallRadius;

        // this doesn't work
        ((GradientDrawable) drawable).setCornerRadius(newRadius);

        // this doesn't work either
        ((GradientDrawable) drawable).setCornerRadii(new float[] {newRadius, newRadius, newRadius, newRadius, newRadius, newRadius, newRadius, newRadius });
    }

Это ошибка в 4.2.2?


person cookie    schedule 31.05.2013    source источник


Ответы (1)


Чтобы обойти это, я, наконец, просто написал код для воссоздания Drawables, когда они мне нужны. Это было необходимо в любом случае, чтобы изменить все радиусы углов, уменьшить / увеличить количество теневых прямоугольников и т. Д.

person cookie    schedule 18.07.2013