web-dev-qa-db-fra.com

Android - affichage du texte au centre de la barre de progression

J'ai déjà fait une barre de progression horizontale et cela fonctionne parfaitement. Je voudrais afficher une vue de texte ou quelque chose de similaire en plein milieu, affichant un compte à rebours pendant le chargement de la barre. Gardez à l'esprit que ce n'est pas une boîte de dialogue de progression, la barre de progression réside dans une activité et affiche un compte à rebours. Quelqu'un peut-il m'aider, quelle est la meilleure façon de le faire et comment puis-je accomplir cela?

25
ahmad

Si votre ProgressBar et TextView sont dans une RelativeLayout, vous pouvez donner un identifiant à la variable ProgressBar, puis aligner la TextView avec la ProgressBar en utilisant cette. Il devrait ensuite apparaître au-dessus de ProgressBar. Assurez-vous que l’arrière-plan est transparent pour que vous puissiez toujours voir la ProgressBar

Par exemple:

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    >
    <ProgressBar
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        // other attributes
        Android:id="@+id/PROGRESS_BAR"
    >
    <TextView
        Android:background="#00000000" // transparent
        // other attributes
        Android:layout_alignLeft="@id/PROGRESS_BAR"
        Android:layout_alignTop="@id/PROGRESS_BAR"
        Android:layout_alignRight="@id/PROGRESS_BAR"
        Android:layout_alignBottom="@id/PROGRESS_BAR"
    >
</RelativeLayout>
37
Matt Harris

Vous pouvez utiliser un FrameLayout pour afficher le TextView sur le ProgressBar:

...
<FrameLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <ProgressBar
        Android:id="@+id/progress"
        style="@Android:style/Widget.ProgressBar.Horizontal"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:progressDrawable="@drawable/progressbar" />

    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_centerVertical="true" />
        ...
    </RelativeLayout>
</FrameLayout>
10
Yann

c'est ce qui a fonctionné pour moi:

             <RelativeLayout
                    Android:layout_width="match_parent"
                    Android:layout_height="match_parent">
                  <ProgressBar
                      Android:id="@+id/progressBar"
                      style="@Android:style/Widget.ProgressBar.Horizontal"
                      Android:progressDrawable="@drawable/customprogressbar"
                      Android:layout_width="match_parent"
                      Android:layout_height="match_parent"
                      Android:max="100"/>

                  <TextView
                      Android:id="@+id/progressBarinsideText"
                      Android:layout_width="wrap_content"
                      Android:layout_height="wrap_content"
                      Android:layout_alignParentLeft="true"
                      Android:layout_alignParentRight="true"
                      Android:layout_centerVertical="true"
                      Android:gravity="center"
                    />
              </RelativeLayout>
3
Roy Doron

Voici ce que j’utilisais pour afficher le texte de progression au-dessus d’une visionneuse centrée sur une vue Web:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <WebView
        Android:id="@+id/help_webview"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:background="#F22"
        Android:scrollbars="none" />


    <ProgressBar
        Android:id="@+id/progressBar"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerHorizontal="true"
        Android:layout_centerInParent="true"
        Android:layout_centerVertical="true" />

    <TextView
        Android:id="@+id/progressBarMessage"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Loading, please wait..."
        Android:layout_centerInParent="true"
        Android:layout_above="@id/progressBar"
        Android:background="#00000000" />


</RelativeLayout>
1
Casey Murray

Tutoriel source

Dans Activity, vous pouvez afficher et ignorer ProgressBar en utilisant les méthodes suivantes

// Method to show Progress bar
private void showProgressDialogWithTitle(String substring) {
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    //Without this user can hide loader by tapping outside screen
    progressDialog.setCancelable(false);
    progressDialog.setMessage(substring);
    progressDialog.show();
}

// Method to hide/ dismiss Progress bar
private void hideProgressDialogWithTitle() {
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    progressDialog.dismiss();
}

Vérifier autre

0
Code Spy