Android 自定义seekbar,具有淡入淡出的alpha颜色渐变、黑色薄边框和平铺背景 目标
我正在尝试复制此对话框 现状 但我只说到这一点(仅显示相关部分): 缺少什么 一种在自定义Seekbar的“进度区域”周围添加薄黑色边框的方法,以及限制在该“进度区域”的平铺背景 我的代码 实际上,myAndroid 自定义seekbar,具有淡入淡出的alpha颜色渐变、黑色薄边框和平铺背景 目标,android,seekbar,android-seekbar,Android,Seekbar,Android Seekbar,我正在尝试复制此对话框 现状 但我只说到这一点(仅显示相关部分): 缺少什么 一种在自定义Seekbar的“进度区域”周围添加薄黑色边框的方法,以及限制在该“进度区域”的平铺背景 我的代码 实际上,myCustomSeekBar(它扩展了AppCompatSeekBar)可以很好地设置代码中的开始和结束颜色。以下是函数: public void setGradientColor(@ColorInt int leftColor, @ColorInt int rightcolor) {
CustomSeekBar
(它扩展了AppCompatSeekBar)可以很好地设置代码中的开始和结束颜色。以下是函数:
public void setGradientColor(@ColorInt int leftColor, @ColorInt int rightcolor) {
grad = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
new int[] {leftColor, rightcolor});
setProgressDrawable(grad);
}
但是尝试设置背景图像的结果与当前状态图像中的最后一个seekbar相似(背景延伸到进度区域之外,并填充视图的所有区域):
res/drawable
中的Mychecker.xml
文件:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/checkerstile"
android:tileMode="repeat"
/>
对于问题的“边框”部分,您只需在GradientDrawable中添加一个笔划即可:
public void setGradientColor(@ColorInt int leftColor, @ColorInt int rightcolor) {
grad = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
new int[] {leftColor, rightcolor});
grad.setStroke(/* stroke width*/, /* int color*/);
setProgressDrawable(grad);
}
对于这一点,很简单,很抱歉我帮不上忙。我找到了一个可行的解决方案:
int padding = aSeekBar.getPaddingStart();
InsetDrawable bgImg = new InsetDrawable(context.getDrawable(R.drawable.checker), padding);
aSeekBar.setBackground(bgImg);
将其与边界的值相结合,可以得到以下结果:
你为什么不让你的seekbar背景透明,在seekbar后面放一个你想要的布局?不是更容易吗?我不太明白你的意思。如果您建议修改对话框的布局xml以添加布局层,我是不允许这样做的。我还需要指定在进度处开始和结束的颜色,而不是视图本身。这很有效。我以前试过
.setStroke()
,但我想我一定是把它放错地方了,它会被覆盖。
int padding = aSeekBar.getPaddingStart();
InsetDrawable bgImg = new InsetDrawable(context.getDrawable(R.drawable.checker), padding);
aSeekBar.setBackground(bgImg);