Я создаю выбор цвета из SeekBar.До сих пор я успешно заменил прорисовку прогресса в onCreate () следующим образом:
SeekBar colorChooser = (SeekBar) findViewById(R.id.seekBarColorChooser);
LinearGradient rainbow = new LinearGradient(0f, 0f, 100f, 0f,
new int[] { 0xFFFF0000, 0xFFFFFF00, 0xFF00FF00,
0xFF00FFFF, 0xFF0000FF,
0xFFFF00FF, 0xFFFF0000}, null, TileMode.CLAMP);
RoundRectShape roundedRect = new RoundRectShape(new float [] {10f, 10f, 10f, 10f, 10f, 10f, 10f, 10f} , null, null);
ShapeDrawable shape = new ShapeDrawable(roundedRect);
shape.getPaint().setShader(rainbow);
colorChooser.setProgressDrawable((Drawable) shape);
Это работает отлично!Результатом является именно то, что я ищу, однако, единственное, что меня беспокоит, это жестко заданная ширина (100f) в LinearGradient.
Поскольку этот диалог еще не реализован, ни SeekBar, ни Dialogкажется, какой-либо ширины.Другими словами, colorChooser.getWidth () возвращает 0.
Если ширина слишком мала, градиент уплотняется с левой стороны.Если он слишком большой, появляется только часть градиента.Как получить правильное значение ширины для правильной настройки линейного градиента?
Спасибо!