如何在中心设置自定义进度条?
how to set Custom Progress bar in center?
我为自定义进度条创建了示例程序。它正在工作,但我面临的问题是进度条未设置在屏幕中间。
我必须先显示列表的视图项目,然后才能显示进度条。
这里我的完整代码如下:-
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="match_parent">
<com.wang.avi.AVLoadingIndicatorView
android:layout_width="wrap_content"
android:background="#000"
android:layout_gravity="center"
android:layout_height="wrap_content"
style="@style/AVLoadingIndicatorView.Large"
app:indicatorName="BallPulseIndicator"
android:id="@+id/avi"
/>
<ListView
android:id="@+id/visitor_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
main.java
private AVLoadingIndicatorView avi;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_rorder, container, false);
getActivity().setTitle("Order");
String indicator=getActivity().getIntent().getStringExtra("indicator");
avi= (AVLoadingIndicatorView)view.findViewById(R.id.avi);
avi.setIndicator(indicator);
new DownloadJSON().execute();
return view;
}
private class DownloadJSON extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
avi.show();
// avi.setVisibility(View.VISIBLE);
/*
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setTitle("Please Wait");
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
*/
}
@Override
protected Void doInBackground(Void... args) {
try {
}
@Override
protected void onPostExecute(Void args) {
// mProgressDialog.dismiss();
avi.hide();
}
}
}
喜欢这个我试过了但是它不起作用请帮我解决这个问题。
尝试使用 RelativeLayout
作为 ListView
和 AVLoadingIndicatorView
的父级,并将 AVLoadingIndicatorView
的 layout_centerInParent
属性设置为 true :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.wang.avi.AVLoadingIndicatorView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="#000"
style="@style/AVLoadingIndicatorView.Large"
app:indicatorName="BallPulseIndicator"
android:id="@+id/avi"/>
<ListView
android:id="@+id/visitor_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
</LinearLayout>
只需使用进度对话框即可。示例如下
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(getActivity(), "", "Please Wait ", true, false);
}
@Override
protected void onPostExecute(Void result) {
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
}
我为自定义进度条创建了示例程序。它正在工作,但我面临的问题是进度条未设置在屏幕中间。
我必须先显示列表的视图项目,然后才能显示进度条。
这里我的完整代码如下:-
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="match_parent">
<com.wang.avi.AVLoadingIndicatorView
android:layout_width="wrap_content"
android:background="#000"
android:layout_gravity="center"
android:layout_height="wrap_content"
style="@style/AVLoadingIndicatorView.Large"
app:indicatorName="BallPulseIndicator"
android:id="@+id/avi"
/>
<ListView
android:id="@+id/visitor_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
main.java
private AVLoadingIndicatorView avi;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_rorder, container, false);
getActivity().setTitle("Order");
String indicator=getActivity().getIntent().getStringExtra("indicator");
avi= (AVLoadingIndicatorView)view.findViewById(R.id.avi);
avi.setIndicator(indicator);
new DownloadJSON().execute();
return view;
}
private class DownloadJSON extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
avi.show();
// avi.setVisibility(View.VISIBLE);
/*
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setTitle("Please Wait");
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
*/
}
@Override
protected Void doInBackground(Void... args) {
try {
}
@Override
protected void onPostExecute(Void args) {
// mProgressDialog.dismiss();
avi.hide();
}
}
}
喜欢这个我试过了但是它不起作用请帮我解决这个问题。
尝试使用 RelativeLayout
作为 ListView
和 AVLoadingIndicatorView
的父级,并将 AVLoadingIndicatorView
的 layout_centerInParent
属性设置为 true :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.wang.avi.AVLoadingIndicatorView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="#000"
style="@style/AVLoadingIndicatorView.Large"
app:indicatorName="BallPulseIndicator"
android:id="@+id/avi"/>
<ListView
android:id="@+id/visitor_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
</LinearLayout>
只需使用进度对话框即可。示例如下
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(getActivity(), "", "Please Wait ", true, false);
}
@Override
protected void onPostExecute(Void result) {
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
}