我正在尝试创建一个搜索栏。它必须如下图所示。
这是布局中的搜索栏:
import numpy as np
import pandas as pd
from pandas import DataFrame
from pandas import Series
pd.set_option('display.max_columns', None)
df = pd.read_csv('Medicare.txt', 'r', sep='\t', na_values=['.'])
print (len(df))
df.head(10)
这是progressbar_thumb drawable XML:
TypeError: parser_f() got multiple values for argument 'sep'
拇指有两个不同的图像,一个垂直线和一个圆形旋钮。我的问题是如何在Android搜索栏中使用这样的拇指。如果我将拇指设置为XML,则将拇指宽度视为圆形旋钮的宽度。因此,如下图所示,它会在拇指和进度之间留出一些空间。我可以自定义视图以显示完整的拇指,但如何删除拇指周围的额外空间?
答案 0 :(得分:0)
我遇到了类似的问题。 我觉得非常有用this code。
您只需要更改onDraw(Canvas canvas)
希望这可以提供帮助。
编辑1:
这是我的代码,将标签的进展百分比放在seekbar拇指下。您只需更改label_x
中label_y
和onDraw(Canvas canvas)
的值即可更改标注的位置。
public class SeekBarWithHint extends android.support.v7.widget.AppCompatSeekBar {
private final int MIN_PROGRESS_VALUE = 0;
private final int MAX_PROGRESS_VALUE = 100;
private Paint mSeekBarHintPaint;
private int mHintTextColor;
private float mHintTextSize;
public SeekBarWithHint(Context context) {
super(context);
init();
}
public SeekBarWithHint(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.getTheme().obtainStyledAttributes(
attrs,
R.styleable.SeekBarWithHint,
0, 0);
try {
mHintTextColor = a.getColor(R.styleable.SeekBarWithHint_hint_text_color, 0);
mHintTextSize = a.getDimension(R.styleable.SeekBarWithHint_hint_text_size, 0);
} finally {
a.recycle();
}
init();
}
public SeekBarWithHint(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
setMax(MAX_PROGRESS_VALUE);
mSeekBarHintPaint = new TextPaint();
mSeekBarHintPaint.setColor(mHintTextColor);
mSeekBarHintPaint.setTextSize(mHintTextSize);
}
@Override
protected synchronized void onDraw(Canvas canvas) {
super.onDraw(canvas);
int label_x = (int) (getThumb().getBounds().centerX());
int label_y = getHeight();
canvas.drawText(String.valueOf(getProgress()) + "%", getProgress() > 95 ? label_x - 55 : label_x, label_y, mSeekBarHintPaint);
}
private void animateProgression(int progress) {
final ObjectAnimator animation = ObjectAnimator.ofInt(this, "progress", MIN_PROGRESS_VALUE, progress);
animation.setDuration(3000);
animation.setInterpolator(new DecelerateInterpolator());
animation.start();
this.setProgress(progress);
this.clearAnimation();
}
public void setSeekbarProgress(int progress) {
animateProgression(progress);
}
}
编辑2:
最好使用完全符合您要求的DescreteSeekBar。