添加垂直彩色线到seekbar背景drawable

时间:2012-08-16 23:46:32

标签: android seekbar

如何将单独的垂直彩色线条动态添加到搜索栏的进度条?

我已经将progress.xml,progress_fill.xml和background_fill文件创建为单独的drawable,允许我在某种程度上自定义我的搜索栏。但是,根据情况,可能需要在搜索条上的任何点绘制各个垂直线。它们不能在XML布局文件中设置。

我想我需要以编程方式将小颜色的rects写入background_fill.xml drawable(我的progress_fill已设置为大部分透明)。

如何以编程方式将这些litte rects写入我的background_fill.xml drawable?

我在TextView中做了类似的事情,因为我使用了SpannableStringBuilder和ImageSpan将小的部分写入TextView。但是我没有看到它可用于搜索栏小部件。

1 个答案:

答案 0 :(得分:2)

通过扩展SeekBar小部件来实现这一点。两步:首先,创建一个名为CustomSeekBar的新类来扩展SeekBar:

package com.example.seekbar;

class CustomSeekBar extends SeekBar {

public CustomSeekBar(Context context) {
    super(context);
}

public CustomSeekBar(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomSeekBar(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);

    private Paint paintRect = new Paint();
    paintRect.setColor(Color.rgb(142, 196, 0));

    private Rect audioRect = new Rect();
    audioRect.set(5, 7, 4, 18);

    canvas.drawRect(audioRect, paintRect);
}
}

其次,在布局xml文件中引用此CustomSeekBar:

    <view class="com.example.seekbar.CustomSeekBar"
    android:id="@+id/seekBar0"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" />