2016-03-23 38 views
2

私はアクティビティインジケータを作成してStackLayoutに追加しました。エミュレータでは、これを右上のAndroid 4.4とiOSのノーショーに表示し、Android 6の電話機では表示しません。ActivityIndi​​catorを画面中央に表示するにはどうすればよいですか?

var indicator = new ActivityIndicator() 
      { 
       Color = Color.Blue, 
      }; 
      indicator.SetBinding(ActivityIndicator.IsVisibleProperty, "IsBusy", BindingMode.OneWay); 
      indicator.SetBinding(ActivityIndicator.IsRunningProperty, "IsBusy", BindingMode.OneWay); 
AbsoluteLayout.SetLayoutFlags(indicator, AbsoluteLayoutFlags.PositionProportional); 
      AbsoluteLayout.SetLayoutBounds(indicator, new Rectangle(0.5, 0.5, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize)); 
mainLayout.Children.Add(indicator); 

操作が完了するまでに時間がかかるため、画面の中央にアクティビティインジケータを表示したいとします。

答えて

8

ステータスバーに表示されるインジケータは、ベースページクラスのIsBusyプロパティのデフォルトの動作です。コードが機能しないのは、ActivityIndicatorの可視性をそのプロパティにバインドしようとしているが、バインディングソースを指定していないためです。デバッガのアプリケーション出力ログを見ると、 "Object 'の" Property' IsBusy '行にメッセージが表示されることがあります。

修正するには、各バインディングのバインディングコンテキストをフォームにポイントするだけで済みます。試してみてください:

public partial class App : Application 
{ 
    public App() 
    { 
     var mainLayout = new AbsoluteLayout(); 
     MainPage = new ContentPage { 
      Content = mainLayout 
     }; 

     var containerPage = Application.Current.MainPage; 

     var indicator = new ActivityIndicator() { 
      Color = Color.Blue, 
     }; 
     indicator.SetBinding(VisualElement.IsVisibleProperty, new Binding("IsBusy", BindingMode.OneWay, source: containerPage)); 
     indicator.SetBinding(ActivityIndicator.IsRunningProperty, new Binding("IsBusy", BindingMode.OneWay, source: containerPage)); 
     AbsoluteLayout.SetLayoutFlags(indicator, AbsoluteLayoutFlags.PositionProportional); 
     AbsoluteLayout.SetLayoutBounds(indicator, new Rectangle(0.5, 0.5, AbsoluteLayout.AutoSize, AbsoluteLayout.AutoSize)); 
     mainLayout.Children.Add(indicator); 

     containerPage.IsBusy = true; 
    } 
} 
0

スタックレイアウトにアクティビティインジケータを追加しますが、絶対レイアウトのLayoutFlagsを設定すると機能しません。

はあなたが望むものを達成することができるようにするには、次のものが必要

AbsoluteLayout 
     StackLayout 
     ActivityIndicator 

構造を吸うmainLayoutはAbsoluteLayoutする必要があり、すべてのコンテンツは、ネストされたStackLayoutに含まれるべきです。

関連する問題