2

我有问题,如何更改进度对话框中的文本(基本上有 STYLE_HORIZONTAL 如图)(使用 Android 1.6)

在此处输入图像描述

到图中所示的文字。

在此处输入图像描述

在这种情况下请帮忙。我关于进度对话框的代码是这样的: -

 mProgressDialog = new ProgressDialog(PDFActivity.this);

  mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

  mProgressDialog.setTitle(R.string.msgDownloadingWait);
  mProgressDialog.setMessage(getResources().getString(
    R.string.msgDownloading));

  // User is not allowed to cancel the download operation.
  mProgressDialog.setCancelable(false);

  mProgressDialog.setMax(serverFileCount);

  mProgressDialog.show(); 

提前致谢。

4

1 回答 1

2

几天前我得到了与这些东西相关的答案(但今天有空闲时间更新它)。

这是我用来使这些东西最好的代码。我通过自定义对话框实现了上述目标。首先这里是我调用自定义对话框类的活动代码。

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;

public class ProgressThread extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        MyDialog dialog = new MyDialog(this);
        dialog.show();
    }
}

现在是与自定义对话框相关的代码。在这里,我ProgressBar & TextViews在 CustomDialog 中使用并在下载的基础上进行了计算,这反过来又更新了 TextViews。此处使用的示例以虚拟方式更新了 textviews 和进度条。您可以根据需要进行更改。

import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MyDialog extends Dialog {
    public static final int STATUS_UPDATE = 101;
    public static final int STATUS_COMPLETE = 100;
    ProgressBar progressBar;
    TextView textView;
    TextView percent;
    int increment;
    int progress;

    public MyDialog(Context context) {
        super(context);
        setContentView(R.layout.progressbar);

        setDialog();
    }

    private void setDialog() {
        setTitle("Downloading Files....");
        textView = (TextView) findViewById(R.id.textProgress);
        progressBar = (ProgressBar) findViewById(R.id.progress_horizontal);
        percent = (TextView) findViewById(R.id.textPercentage);

        percent.setTextColor(Color.WHITE);
        textView.setTextColor(Color.WHITE);

        progressBar.setProgressDrawable(getContext().getResources()
                .getDrawable(R.drawable.my_progress));
        progressBar.setIndeterminate(false);

        // set the maximum value
        progressBar.setMax(1315);

        launcherThread();

    }

    private void launcherThread() {

        LoaderThread loaderThread = new LoaderThread();
        loaderThread.start();

        LauncherThread launcherThread = new LauncherThread();
        launcherThread.start();

    }

    private class LoaderThread extends Thread {
        @Override
        public void run() {
            try {
                while (progressBar.getProgress() < progressBar.getMax()) {
                    // wait 500ms between each update
                    Thread.sleep(100);
                    increment++;
                    // active the update handler
                    progressHandler.sendEmptyMessage(STATUS_UPDATE);
                }
                progressHandler.sendEmptyMessage(STATUS_COMPLETE);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    // handler for the background updating
    Handler progressHandler = new Handler() {
        public void handleMessage(Message msg) {

            switch (msg.what) {

            case STATUS_UPDATE:
                progressBar.setProgress(increment);
                float value = increment / 1315F;
                percent.setText(" " + ((int) (value * 100)) + "%");
                System.out.println(value * 100);
                textView.setText(String.valueOf(progressBar.getProgress())
                        .concat(" / " + progressBar.getMax()));
                break;

            case STATUS_COMPLETE:
                dismiss();
            }
        }
    };

    private class LauncherThread extends Thread {
        @Override
        public void run() {
            progressHandler.sendMessage(progressHandler.obtainMessage());
            progressHandler.sendEmptyMessage(0);
        }
    }
} 
于 2011-11-15T10:02:09.683 回答