3

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

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

我想我需要以编程方式将小彩色矩形写入 background_fill.xml 可绘制对象(我的 progress_fill 已设置为大部分透明)。

如何以编程方式将这些小矩形写入我的 background_fill.xml 可绘制对象?

我在 TextView 中做了类似的事情,因为我使用 SpannableStringBuilder 和 ImageSpan 将小矩形写入 TextView。但我不认为这可用于搜索栏小部件。

4

1 回答 1

2

Did this by extending the SeekBar widget. Two steps: first, create a new class called CustomSeekBar to extend the 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);
}
}

Second, reference this CustomSeekBar in the layout xml file as:

    <view class="com.example.seekbar.CustomSeekBar"
    android:id="@+id/seekBar0"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" />
于 2012-08-17T14:55:35.123 回答