2016-07-19 27 views
0

私はローディングスピナーをキャンバスに配置しようとしています。私の表示でAndroid ProgressBar

this.progressBar = new ProgressBar(context, null, Resource.Attribute.progressBarStyle); 

そしてOnDraw中:コンストラクタで

protected override void OnDraw(Canvas canvas) 
{ 
    base.OnDraw(canvas); 

    // other code to draw other stuff... 

    this.progressBar.Draw(canvas); 
} 

それは現れていません。何か不足していますか? Widthのプロパティをチェックしたところ、デバッグ中に0になっていましたが、まだ修正方法はわかりません。

私のクラスは、あなたがのViewGroupまたは任意のレイアウト(例えばでframeLayout)からあなたのクラスを拡張する必要がView

+0

継承ビューを配置する場合は、単純なビューではなく、ViewGroupまたは任意の「レイアウト」クラスを拡張する必要があります。 –

答えて

0

を拡張し、その後、初期化時に、あなたのプログレスバーとaddViewメソッドを呼び出す必要があります。

単純なViewGroupを拡張する場合は、さらに、onMeasureメソッドとonLayoutメソッドをオーバーライドして、進行ウィジェットの計算サイズを提供し、それに応じてビューグループに配置する必要があります。

Here is a tutorial(詳細については、Xamarinユーザー向け)

+0

私はそれを 'RelativeLayout'に変更してビューを追加しましたが、まだ動作していません:' this.progressBar = new ProgressBar(context、null、Resource.Attribute.progressBarStyle); this.AddView(this.progressBar); '。 TextViewのようなものを追加しようとすると動作します – Darius

+0

レイアウトパラメータを提供しましたか? –

+0

はい、このように: 'progressBar.LayoutParameters = new ViewGroup.LayoutParams(100、100);'まだ何もありません。しかし背景を赤に設定すると赤い四角形が表示されます。 – Darius

関連する問題