私のアクティビティでは、次のようにプログラムでProgressBar
を作成しました。表示するにはどうすればよいですか?
progressBar = new ProgressBar(activity, null, Android.R.attr.progressBarStyleSmall);
このコードを試して、プログレスバーをプログラムでレイアウトに追加できます。
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);
レイアウトで使用できます:
_<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 class:
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);
}
}
}
_
すべてのアクティビティにはコンテンツビューがあります。これは、setContentView()
を呼び出して設定したアクティビティのルートビューです。画面上のすべてのビューは、このビューの子(または子の子など)でなければなりません。これの例外はダイアログです。ダイアログは別のウィンドウに表示されますが、それは別の議論です。
ビューを画面に表示する場合は、コンテンツビュー内のいくつかのViewGroup
に追加する必要があります。
実際、ロードの進行状況バーを使用する通常の方法は異なります。通常はxmlに追加しますが、可視性をGONE
に設定して表示されないようにします。次に、表示したいときにVISIBLE
に設定します。そのため、プログレスバーが表示されているように見えますが、実際にはずっと隠れていました。
私の方法は、それを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>
In Java code
AlertDialog progressDialog = new AlertDialog.Builder(this)
.setView(R.layout.layout_pb)
.setPositiveButton("CANCEL", cancel listener ...)
...
.show();
ProgressBar prog = new ProgressBar(MainActivity.this);
linear1.addView(prog);
linear1はLinearLayoutで、MainActivityはアクティビティです。必要に応じてlinear1とMainActivityを変更します。
最初にパッケージをインポートする必要があります
import Android.app.ProgressDialog;
これを使用して、
ProgressDialog progressDialog;
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("MESSAGE");
progressDialog.show();
........
//tour task
........
progressDialog.dismiss(); //dismiss progress bar
次のように、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
はウィジェット(ビュー)です。ビューグループに追加する必要があります。
ProgressDialogを使用して、ロードの進行状況を表示できます。例:
ProgressDialog proDialog = ProgressDialog.show(this, "title", "message");