Xamarin - ActivityIndi​​cator无效

时间:2017-10-23 12:41:13

标签: android xamarin

我尝试在Android应用中添加ActivityIndi​​cator。什么时候可以在xml中添加代码,或者直接在代码页中添加代码。 但是在代码中,我可以创建带有xamarin表单的新指标,但我不知道如何将指标添加到线性布局中。

如果我将指标添加到axml文件中,它会告诉我ActivityIndi​​cator无效。

在页面中:

 linearLayout1 = FindViewById<LinearLayout>(Resource.Id.linearLayout1);
 var indicator = new Xamarin.Forms.ActivityIndicator();
 linearLayout1.AddView(indicator); //error, indicator not is a view

XML:

 <ActivityIndicator
            Color="Red"
            IsRunning="true" />

2 个答案:

答案 0 :(得分:1)

如果您使用Xamarin.Android创建应用程序,则不应使用ActivityIndi​​cator,它是一个Xamarin.Forms控件,而是使用ProgressBar小部件。

来自Xamarin doc:

以下代码示例显示如何从工作线程使用进度条更新用户界面以通知用户进度:

 public class MyActivity extends Activity {
     private static final int PROGRESS = 0x1;

     private ProgressBar mProgress;
     private int mProgressStatus = 0;

     private Handler mHandler = new Handler();

     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);

         setContentView(R.layout.progressbar_activity);

         mProgress = (ProgressBar) findViewById(R.id.progress_bar);

         // Start lengthy operation in a background thread
         new Thread(new Runnable() {
             public void run() {
                 while (mProgressStatus < 100) {
                     mProgressStatus = doWork();

                     // Update the progress bar
                     mHandler.post(new Runnable() {
                         public void run() {
                             mProgress.setProgress(mProgressStatus);
                         }
                     });
                 }
             }
         }).start();
     }
 }

要向布局文件添加进度条,可以使用该元素。默认情况下,进度条是一个旋转轮(一个不确定的指示器)

答案 1 :(得分:0)

我有一些问题让我的表演。我也使用原生的android ProgressDialog,它实现起来非常简单。

我使用了MainActivity并将其传递给ProgressDialog构造函数。似乎为我工作。在Android和iOS上工作时,将所有内容包装在Device.BeginInvokeOnMainThread中也为我修复了它。我认为这是因为必须在主UI线程上实例化覆盖。

Device.BeginInvokeOnMainThread(() =>
        {
            MainActivity activity = Forms.Context as MainActivity;
            progress = new ProgressDialog(activity);
            progress.Indeterminate = true;
            progress.SetProgressStyle(ProgressDialogStyle.Spinner);
            progress.SetMessage("Connecting to server.. Please wait..");
            progress.SetCancelable(false);
            progress.Show();
        });

不确定这是否正是您所需要的,但它可以帮助您解决问题!