我想在我的主要布局中添加一个进度条,其开头是visibility = GONE。
用户点击后,将发送serverrequest并在asynctask中处理。在那段时间里,进度条应该是可见的并且保持在我的主要布局上。
我尝试使用merge-layout执行此操作。
主要问题是,仍然可以编辑ui元素并单击按钮。是否可以防止这种行为?
也许有一些我不知道的布局资产?
progressbar.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/waiting_dialog"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:background="@color/transparent_grey">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
main_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ScrollView
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_width="fill_parent">
<LinearLayout
android:id="@+id/ticket_reg_linear_inner"
android:layout_height="fill_parent"
android:background="@drawable/bg_main"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="10dp"
android:orientation="vertical"
android:layout_width="fill_parent">
<EditText
android:id="@+id/ticket_reg_phone_edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:text="@string/text_491"
android:maxLines="1" android:singleLine="true" android:imeOptions="actionDone"/>
<Button
android:id="@+id/ticket_reg_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="15dp"
android:layout_marginLeft="10dp"
android:text="@string/text_activate"/>
</LinearLayout>
</ScrollView>
<include layout="@layout/waiting_dialog"/>
</merge>
答案 0 :(得分:1)
对于这种事情,最好创建一个掩盖你的Activity的ProgressDialog。您可以在onCreateDialog()
中创建它并在开始任务之前使用showDialog()
显示该任务,并在任务完成后使用dismissDialog()
在onPostExecute()
的AsyncTask中将其关闭。
ProgressDialog progressDialog = new ProgressDialog(mContext);
progressDialog.setTitle("Loading");
progressDialog.setMessage("Please Wait...");
progressDialog.setCancelable(false);
答案 1 :(得分:1)
您可以将进度条添加到您需要它的主xml文件中,在主类文件中,您可以根据需要将进度条设置为可见性。首先使进度条不可见,在oncreate方法中设置progressbar属性像这样
progressbar = (ProgressBar) findViewById(R.id.myprogressBar);
progressbar.setVisibility(View.INVISIBLE);
然后,您可以在onClickListener中显示进度条,或者您希望进度条可见,
progressbar.setVisibility(View.VISIBLE);
progressbar.setProgress(0);
最后,您可以在完成此过程后将可见性设置为View.GONE
。
答案 2 :(得分:0)
另一个选项是使用progressDialog ...
private ProgressDialog dialog;
dialog = new ProgressDialog(MyApp.this);
dialog.setTitle("this is my ProgressBar");
dialog.setIcon(R.drawable.icon);
dialog.setMessage("Loading...");
dialog.setIndeterminate(true);
dialog.setCancelable(true);
dialog.show();