Texto em cima de progressBar
Estou fazendo um trabalho da faculdade e estou com uns problemas...Preciso colocar um texto em cima da barra de progresso no meu app. Tinha até conseguido colocando um texto fixo "0/100 ml", só que esse texto precisa mudar de acordo com a opção selecionada pelo usuário. E quando tentei fazer isso, o texto sumiu. Outro problema, é na hora de definir o valor máximo da barra de progresso, esse valor vai depender do peso do usuário... não estou conseguindo fazer. Seguem os códigos:
estiloprogressbar.xml
?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dip" />
<solid android:color="@color/primary_light" />
</shape>
</clip>
<color android:color="@color/primary_light" />
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="5dip" />
<solid android:color="@color/primary_light" />
</shape>
</clip>
<color android:color="@color/primary_light" />
</item>
</layer-list>
O progressbar criado em home.xml:
<com.cea436.amanda.drinkwater.TextProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="300dp"
android:layout_height="40dp"
android:background="@color/background_light"
android:id="@+id/barraprogresso"
android:progressDrawable="@drawable/estiloprogressbar"
/>
Quando tento escrever o texto no OnCreate da Activity
qtd_agua = peso * 35;
falta_agua = qtd_agua;
String texto = "0/" + String.valueOf(qtd_agua) + " ml";
t = new TextProgressBar(this, texto);
t.setText("0/" + texto);
E por último, o TextProgressBar.java
public class TextProgressBar extends ProgressBar {
private String text = "";
private Paint textPaint;
public TextProgressBar(Context context,String text) {
super(context);
this.text = text;
textPaint = new Paint();
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(45);
}
public TextProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
textPaint = new Paint();
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(45);
}
public TextProgressBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
textPaint = new Paint();
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(45);
}
@Override
protected synchronized void onDraw(Canvas canvas) {
super.onDraw(canvas);
Rect bounds = new Rect();
textPaint.getTextBounds(text, 0, text.length(), bounds);
int x = getWidth() / 2 - bounds.centerX();
int y = getHeight() / 2 - bounds.centerY();
canvas.drawText(text, x, y, textPaint);
}
public synchronized void setText(String text) {
this.text = text;
drawableStateChanged();
}
public void setTextColor(int color) {
textPaint.setColor(color);
drawableStateChanged();
}
public String getText() {
return text;
}
}
Imagino que o problema esteja nessa última classe, mas não consigo entender o motivo. Já depurei e não entendi onde está falhando :(
Discussão (0)
Carregando comentários...