カスタムビューを始めたばかりです。ビューを作成し、レイアウトを n 回繰り返すようにしたいと思います。
次のコードでは、カスタム ビューは繰り返されません。さらに、ラベルとボタンの前に挿入すると、レンダリングされません。ただし、他の 2 つのコントロールの後にカスタム ビューを挿入すると、それらが表示されます。
onLayout などをいじってみましたが、成功しませんでした。
誰かが私を正しい方向に向けることができますか?
乾杯。
public class ThreeRects : View
{
Paint _boxPaint;
Paint _boxPaint2;
Paint _boxPaint3;
public ThreeRects (Context context): base(context)
{
this._boxPaint = new Paint (PaintFlags.AntiAlias);
this._boxPaint.SetStyle (Paint.Style.Fill);
_boxPaint.Color = Color.Aqua;
this._boxPaint2 = new Paint (PaintFlags.AntiAlias);
this._boxPaint2.SetStyle (Paint.Style.Fill);
_boxPaint2.Color = Color.Red;
this._boxPaint3 = new Paint (PaintFlags.AntiAlias);
this._boxPaint3.SetStyle (Paint.Style.Fill);
_boxPaint3.Color = Color.Blue;
}
protected override void OnDraw (Android.Graphics.Canvas canvas)
{
var rect = new RectF (0, 0, 50, 50);
var rect2 = new RectF (50, 50, 100, 100);
var rect3 = new RectF (100, 100, 150, 150);
canvas.DrawRect (rect, this._boxPaint);
canvas.DrawRect (rect2, this._boxPaint2);
canvas.DrawRect (rect3, this._boxPaint3);
base.OnDraw (canvas);
}
}
[Activity (Label = "FertPinAndroid", MainLauncher = true)]
public class MainActivity : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate(bundle);
var layout = new LinearLayout (this);
layout.Orientation = Orientation.Vertical;
var aLabel = new TextView (this);
aLabel.Text = "Hello World";
var aButton = new Button (this);
aButton.Text = "Say Hello";
aButton.Click += (sender, e) => {
aLabel.Text = "Hello from the button";
};
layout.AddView (new ThreeRects (this));
layout.AddView (aLabel);
layout.AddView (aButton);
layout.AddView (new ThreeRects (this));
layout.AddView (new ThreeRects (this));
SetContentView (layout);
}
}