如何在AsyncTask.onPreExecute中以编程方式添加ProgressBar?

时间:2012-07-16 14:08:06

标签: android android-progressbar

异步任务中的代码:

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        ScrollView sv = (ScrollView)findViewById(mScrollViewID);
        sv.removeAllViews();
        pb = new ProgressBar(mContext, null, android.R.attr.progressBarStyleSmall);
        pb.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        pb.setIndeterminate(true);
        pb.setVisibility(View.VISIBLE);

        TextView tv = new TextView(mContext);
        tv.setText("Some text here.");
        sv.addView(pb);
    }

请注意最后的TextView - 如果我将其添加到ScrollView,则会显示正常。但是,我似乎无法让ProgressBar显示任何内容。这是我第一次使用控件 - 我错过了一些愚蠢的东西吗?

编辑:如果重要,则使用的ScrollView在XML中定义为:

<ScrollView android:id="@+id/scrollview0" android:layout_width = "match_parent" android:layout_height="match_parent"
            android:fillViewport="true" android:padding="5dp">

3 个答案:

答案 0 :(得分:3)

当您动态创建ProgressBar时,会出现很多问题

我建议通过xml创建一个ProgressBar

并设置默认可见性GONE

答案 1 :(得分:0)

此链接可能有所帮助:Update progressbar inside asynctask

答案 2 :(得分:0)

如果您在tv后添加pb,则deffinatyl会显示错误?

这是因为ScrollView只托管一个孩子。那么您需要在LinearLayout中添加ScrollView,然后在Linear layout中添加其他内容