以编程方式创建和显示进度条

时间:2016-07-02 13:59:33

标签: android android-layout android-activity

我已在我的活动中以编程方式创建了ProgressBar。我该如何展示?

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall);

8 个答案:

答案 0 :(得分:8)

您可以尝试使用此代码将progBar编程添加到您的布局中。

RelativeLayout layout = new RelativeLayout(this);
ProgressBar progressBar = new ProgressBar(YourActivity.this,null,android.R.attr.progressBarStyleLarge);
progressBar.setIndeterminate(true);
progressBar.setVisibility(View.VISIBLE);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(progressBar,params);

setContentView(layout);

答案 1 :(得分:1)

你可以在布局中使用:

<RelativeLayout
    android:id="@+id/rlLoading"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ad000000"
    android:visibility="gone">


    <com.airbnb.lottie.LottieAnimationView
        android:id="@+id/animation_view"
        android:layout_width="@dimen/toolbar_height_70dp"
        android:layout_height="@dimen/toolbar_height_70dp"
        android:layout_centerHorizontal="true"
        android:layout_centerInParent="true"
        android:layout_marginTop="10dp"
        app:lottie_autoPlay="true"
        app:lottie_fileName="lottie/circle-l.json"
        app:lottie_loop="true"

        />


</RelativeLayout>

并在java类中:

rlLoading.setVisibility(View.VISIBLE); Utility.disableEnableControls(false,rlRoot);

 public static void disableEnableControls(boolean enable, ViewGroup vg) {
    for (int i = 0; i < vg.getChildCount(); i++) {
        View child = vg.getChildAt(i);
        child.setEnabled(enable);
        if (child instanceof ViewGroup) {
            disableEnableControls(enable, (ViewGroup) child);
        }
    }
}

答案 2 :(得分:0)

progressBar是一个小部件(视图)。您需要添加到viewgroup。

您可以使用ProgressDialog显示进度加载 示例:

ProgressDialog proDialog = ProgressDialog.show(this, "title", "message");

答案 3 :(得分:0)

每个活动都有一个内容视图。这是您通过调用setContentView()设置的活动的根视图。屏幕上的每个视图都必须是此视图的子视图(或孩子的孩子等)。例外情况是对话框,它出现在一个单独的窗口中,但这是另一个讨论。

如果您希望视图显示在屏幕上,则必须将其添加到内容视图内的某些ViewGroup

实际上,使用进度条进行加载的正常方式是不同的。通常,您在xml中添加一个,但是将其可见性设置为GONE,因此它不会出现。然后,当您希望它显示时,将其设置为VISIBLE。所以它看起来像进度条,但它一直隐藏在那里。

答案 4 :(得分:0)

你可以在xml文件中添加progressBar,就像这样

<ProgressBar
            android:id="@+id/pbProgress"
            android:style="@style/Spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </ProgressBar>

并且可见,实用地隐形。

这是在xml文件中添加进度条的方法 但是如果要实际添加,可以使用progressBar.setVisibility(View.Visible)显示进度条,也可以使用progressBar.setVisibility(View.Gone)隐藏活动的进度条。

答案 5 :(得分:0)

ProgressBar prog = new ProgressBar(MainActivity.this);
linear1.addView(prog);

linear1是LinearLayout,MainActivity是您的活动。 根据您的需要更改linear1和MainActivity。

答案 6 :(得分:0)

首先,您需要导入软件包

import android.app.ProgressDialog;

然后使用它

    ProgressDialog progressDialog;

    progressDialog = new ProgressDialog(this);

    progressDialog.setMessage("MESSAGE");
    progressDialog.show();
    ........
    //tour task
    ........
    progressDialog.dismiss(); //dismiss progress bar

答案 7 :(得分:0)

我的方法是将其包装在AlertDialog中,调用对话框并在需要时使用show(),hide()和一些相关函数。因此,您不需要在主XML布局文件中设置ProgressBar,并且可以在不通过编程方式设置布局参数的情况下调用它。

在布局文件layout_pb.xml

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center">
    <ProgressBar
        android:id="@+id/mProgress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ProgressBar>
    <!--add other customize layout components you want-->
</LinearLayout>

使用Java代码

AlertDialog progressDialog = new AlertDialog.Builder(this)
                                 .setView(R.layout.layout_pb)
                                 .setPositiveButton("CANCEL", cancel listener ...)
                                 ...
                                 .show();