android - 我如何设计带有点的 android 搜索栏

标签 android styles seekbar android-drawable

我的客户希望有一个看起来完全像这样的搜索栏: enter link description here 我已经设置了进度、次要进度和拇指的样式,使其看起来如愿,但我不知道如何在进度上应用这些点。 我希望这可以通过 drawable 实现,并且我不必应用 5 张带有填充或类似内容的图像。

提前致谢。

最佳答案

终于解决了。也许其他人可能需要这个。 我继承了原始类并更改了 onDraw:

public class SeverityBar extends SeekBar {
private Paint selected, unselected;
private int halfSize = 15;
private RectF position;

public SeverityBar(Context context) {
    super(context);
    selected = new Paint(Paint.ANTI_ALIAS_FLAG);
    selected.setColor(getContext().getResources().getColor(R.color.TextColor));
    selected.setStyle(Style.FILL);
    unselected = new Paint(Paint.ANTI_ALIAS_FLAG);
    unselected.setColor(getContext().getResources().getColor(android.R.color.darker_gray));
    selected.setStyle(Style.FILL);
    position = new RectF();
}

@Override
protected synchronized void onDraw(Canvas canvas) {
    int paddingLeft = getPaddingLeft();
    int paddingTop = getPaddingTop();
    float margin = (canvas.getWidth()-(paddingLeft+getPaddingRight()))/4;
    float halfHeight = (canvas.getHeight()+paddingTop)*.5f;
    for (int i = 0; i < 5; i++) {
        position.set(
                paddingLeft+(i*margin)-halfSize, 
                halfHeight-halfSize, 
                paddingLeft+(i*margin)+halfSize,
                halfHeight+halfSize);
        canvas.drawOval(position, (i<getProgress())?selected:unselected);
    }
    super.onDraw(canvas);
}

public int getDotsSize() {
    return halfSize*2;
}

public void setDotsSize(int dotsSize) {
    this.halfSize = dotsSize/2;
}

for query 和 margin 的值应根据进度的最小/最大值进行更改。

关于android - 我如何设计带有点的 android 搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16959515/

相关文章:

Android:如何控制音量:如果音量按钮向上,SeekBar向上

android - 如何在没有 Activity/Service 的情况下创建 BroadcastReceiver?

jquery - 无法使用基于文本的 jQuery 为单个单元格设置样式

c# - 如何在资源字典中绑定(bind)数据模板

Android:以编程方式为 ProgressBar/SeekBar 设置 maxHeight 参数

android - 怎么限制seekbar固定步进

android - 设置保留实例(真);做错了?

android - 如何通过无线 LAN 网络接收传入消息并启动 Web 浏览器?

php - 使用 PHP 从 MySQl 数据库中获取 SUM,然后在 android textview 中打印它

android - ActionBarSherlock 更改溢出操作项的文本颜色