Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luthien

Texto em cima de progressBar

Recommended Posts

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 :(

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.