我使用垂直Seekbar库作为拾色器。我设法将ProgressDrawable设置为具有渐变的形状,该渐变表示搜索条的颜色。
LinearGradient test = new LinearGradient(0.f, conv.toPixels(170), 0.0f, 0.0f,
new int[]{0xFF000050, 0xFF0000FF, 0xFF00FF00, 0xFF00FFFF,
0xFFFF0000, 0xFFFF00FF, 0xFFFFFF00, 0xFFFFFFFF},
null, Shader.TileMode.CLAMP);
ShapeDrawable shape = new ShapeDrawable(new RectShape());
shape.getPaint().setShader(test);
这里我创建渐变并将其解析为Shape.A之后我将形状设置为搜索栏的ProgressDrawable。
colorSeekbar.setMax(252 - 1);
colorSeekbar.setProgressDrawable(shape);
最后我添加了我的搜索栏:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(conv.toPixels(80), conv.toPixels(200));
params.setMargins(conv.toPixels(5), conv.toPixels(5), conv.toPixels(5), conv.toPixels(5));
colorSeekbar.setThumb(ResourcesCompat.getDrawable(getResources(), R.drawable.seek_thumb_color, null));
colorSeekbar.setOrientation(UniversalSeekBar.BOTTOM_TO_TOP);
popUpBulbContainer.addView(colorSeekbar, params);
红色背景是seekbar
的背景。渐变是progressDrawable
,蓝色背景是包含所有视图的水平LinearLayout
的背景。
你可以注意到拇指设置在搜索栏的顶部,而progressDrawable
无法到达那里。
任何Ideea我该如何解决这个问题?
答案 0 :(得分:0)
LinearLayout似乎是正确的。它必须与活动布局文件中的父布局有关。
如果要以编程方式添加所有这些元素,请确保将元素(popUpBulbContainer)附加到活动的顶部布局。