Я пытаюсь установить градиент на мою панель инструментов, но кажется, что setSize и setGradientCenter не работают.GradientDrawable создан программно: setSize и setGradientCenter методы не работают
Мне нужно создать его динамически, потому что центр и высота градиента меняются в зависимости от значений, которые я получаю от CMS, но я не могу выполнить эту работу. Независимо от того, какие значения я задал для размера и центра, градиент всегда получает размер всей панели инструментов, а центр - по умолчанию.
Я попытался вызвать mutate() сначала, как говорится в документации, без результата. Также попробовал setBounds с тем же результатом
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setOrientation(gradientData.getOrientation());
gradientDrawable.setColors(gradientData.getColors());
gradientDrawable.setGradientCenter(gradientData.getCenterX(), gradientData.getCenterY());
toolbar.setBackground(gradientDrawable);
Я что-то упустил? Ориентация всегда линейна, если это имеет значение
использования 'ClipDrawable', если все, что вы хотите, чтобы отсечь другой Drawable делает его шире/короче, в зависимости от текущего уровня – pskink
@pskink Я не хочу, чтобы закрепить его , потому что у меня не было бы всего градиента, если я это сделаю. Например, если у меня есть конечный цвет, я даже не увижу его, если я его закрою. Я просто хочу, чтобы градиент был короче или изменил центр так, чтобы эффект градиента заканчивался раньше – moyo
, поэтому используйте 'ScaleDrawable': * A Drawable, который изменяет размер другого Drawable на основе его текущего значения уровня * – pskink