在主布局上添加Progressbar

时间:2011-03-08 17:58:55

标签: android user-interface layout progress-bar

我想在我的主要布局中添加一个进度条,其开头是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>

3 个答案:

答案 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();