Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式创建和显示ProgressBar_Android_Android Layout_Android Activity_Android Progressbar - Fatal编程技术网

Android 以编程方式创建和显示ProgressBar

Android 以编程方式创建和显示ProgressBar,android,android-layout,android-activity,android-progressbar,Android,Android Layout,Android Activity,Android Progressbar,我在活动中以编程方式创建了一个ProgressBar。我怎样才能让它表现出来 progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall); progressBar是一个小部件(视图)。您需要添加到视图组 您可以使用ProgressDialog显示加载进度 例如: ProgressDialog proDialog = ProgressDialog.show(this, "title", "

我在活动中以编程方式创建了一个
ProgressBar
。我怎样才能让它表现出来

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

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

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

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

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

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


实际上,使用进度条加载的正常方式是不同的。通常,您会在xml中添加一个,但您会将其可见性设置为“已消失”,这样它就不会出现。然后,当您希望它出现时,将其设置为可见。因此,进度条看起来像是出现了,但实际上一直隐藏在那里。

您可以尝试使用此代码以编程方式将进度条添加到布局中

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);

您可以像这样在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)来隐藏活动的进度条

ProgressBar prog = new ProgressBar(MainActivity.this);
linear1.addView(prog);
linear1是一个LinearLayout,MainActivity是您的活动。 根据需要更改linear1和MainActivity。

您可以在布局中使用:

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

首先你需要导入包

import android.app.ProgressDialog;
那么用这个,

    ProgressDialog progressDialog;

    progressDialog = new ProgressDialog(this);

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

我的方法是将其包装在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>

谢谢你的回复。但我没有使用ProgressDialog。我希望progressBar在活动中显示为不确定。谢谢。我知道这是一个老问题,但他确实是以编程方式问的,你的答案讨论了如何通过XML手动添加它,而你甚至没有包括如何以编程方式使它可见和不可见。请编辑您的回答这不是一个理想的解决方案,因为您正在使用RecyclerView中的视图。API级别26
ProgressDialog
已被弃用。那么如何设置进度条程序中的消息如何将进度条从视图中分离?@SazzadHissainKhan您需要使用setTag()或setId()对其进行引用然后使用它删除视图或将其可见性设置为Goe Afterward问题询问progressbar而不是ProgressDialog问题是关于仅以编程方式使用
progressbar
<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>
AlertDialog progressDialog = new AlertDialog.Builder(this)
                                 .setView(R.layout.layout_pb)
                                 .setPositiveButton("CANCEL", cancel listener ...)
                                 ...
                                 .show();