2017-10-23 9 views
0

AndroidアプリでActivityIndi​​catorを追加しようとしています。いつxmlでコードを追加したり、コードページに直接追加できます。 しかし、コードでは、私はxamarinフォームで新しいインジケータを作成できますが、インジケータを線形レイアウトに追加する方法はわかりません。Xamarin - ActivityIndi​​catorが無効です

そして、インジケータを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" /> 
+0

Xamarin.Forms.ActivityIndi​​catorはAndroidネイティブウィジェットとXamarin.Formsビューを混在させていますが、Xamarin.Forms.ActivityIndi​​catorはネイティブAndroid.Widget.ProgressBarです – SushiHangover

+0

Ok @SushiHangover、xamarinに循環ロードを追加する方法はありますか?私はxamarin文書でこのコードを見つけました。 – pypypu

+0

https://developer.xamarin.com/api/type/Android.Widget.ProgressBar/を参照してください。 – Adam

答えて

1

あなたはXamarinあるActivityIndi​​catorを、使用すべきではない、あなたのアプリケーションを作成するためにXamarin.Androidを使用している場合.Formsコントロールではなく、代わりにProgressBarウィジェットを使用します。 Xamarinドキュメントから

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(); 
    } 
} 

追加する:

次のコード例では、プログレスバーが進捗をユーザに通知するためのユーザインターフェースを更新するためにワーカースレッドから使​​用することができる方法を示してプログレスバーをレイアウトファイルに追加するには、その要素を使用します。デフォルトでは、プログレスバーは回転ホイール(不確定のインジケータ)です。

0

私は表示することにいくつか問題がありました。また、実装が非常に簡単なネイティブのアンドロイドProgressDialogも使用しています。

私はMainActivityを使用してProgressDialogコンストラクタに渡しました。私のために働くと思った。また、Device.BeginInvokeOnMainThread内のすべてをラップすると、アンドロイドとiOSの両方で作業しながら私のために修正されました。オーバーレイをメインの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(); 
     }); 

これが正確に必要なのかどうかは不明ですが、問題の解決に役立つ場合があります。

関連する問題