Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义seekbar,具有淡入淡出的alpha颜色渐变、黑色薄边框和平铺背景 目标_Android_Seekbar_Android Seekbar - Fatal编程技术网

Android 自定义seekbar,具有淡入淡出的alpha颜色渐变、黑色薄边框和平铺背景 目标

Android 自定义seekbar,具有淡入淡出的alpha颜色渐变、黑色薄边框和平铺背景 目标,android,seekbar,android-seekbar,Android,Seekbar,Android Seekbar,我正在尝试复制此对话框 现状 但我只说到这一点(仅显示相关部分): 缺少什么 一种在自定义Seekbar的“进度区域”周围添加薄黑色边框的方法,以及限制在该“进度区域”的平铺背景 我的代码 实际上,myCustomSeekBar(它扩展了AppCompatSeekBar)可以很好地设置代码中的开始和结束颜色。以下是函数: public void setGradientColor(@ColorInt int leftColor, @ColorInt int rightcolor) {

我正在尝试复制此对话框

现状 但我只说到这一点(仅显示相关部分):

缺少什么 一种在自定义Seekbar的“进度区域”周围添加薄黑色边框的方法,以及限制在该“进度区域”的平铺背景

我的代码 实际上,my
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
中的My
checker.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);