私のXamarin.Forms Androidアプリケーション用のカスタムエントリがあります。現在、カスタムレンダラーを使用して、エントリに罫線の付いた楕円形を与えています。フォーカスのあるエントリの境界線の色を変更します
また、フォーカスしているエントリの境界線の色を変更し、焦点が合っていない場合は元の色に戻したいと考えています。
マイカスタムレンダラは以下の通りです:
public class EntryCellRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
var UIEntry = (e.NewElement != null) ? (EntryCell)e.NewElement : (EntryCell)e.OldElement;
if (this.Control != null)
{
Control.Gravity = Android.Views.GravityFlags.CenterVertical;
Control.SetPadding(30, 30, 30, 31);
GradientDrawable gd = new GradientDrawable();
gd.SetShape(ShapeType.Rectangle);
var BackgroundColor = ColorHelper.FromHex(CoreTheme.COLOR_DEFAULT_CLEAR);
var ColorRef = Android.Graphics.Color.Argb(
(byte)(BackgroundColor.A * 255),
(byte)(BackgroundColor.R * 255),
(byte)(BackgroundColor.G * 255),
(byte)(BackgroundColor.B * 255));
gd.SetColor((int)ColorRef);
UIEntry.BackgroundColor = Xamarin.Forms.Color.Transparent;
gd.SetStroke(7, Android.Graphics.Color.LightGray);
gd.SetCornerRadius(20.0f);
Control.SetBackground(gd);
}
}
}
私はこのカスタムエントリと上記やりたいことのためにフォーカスイベントを持つ続行するかどうかはわかりません。
大丈夫ですが、これはうまくいきますが、エントリーから外れてしまうと、焦点が外れたり色が変わったりしません。これには理由がありますか? – Euridice01
@ Euridice01わかりません。ビューフォーカスがフォーカスに変わったときに、 'Focused'イベントコールを取得していませんか?または...?つまり、この行は呼び出されていませんか? https://github.com/xamarin/Xamarin.Forms/blob/4f8af14f13f34d9b66d92e315c8486edd28e851a/Xamarin.Forms.Platform.Android/ViewRenderer.cs#L62 – SushiHangover
ページが読み込まれています...エントリにフォーカスが当てられていません。それから私はそれをタップし、それは集中している。エントリーの中で入力を終えてエントリーの外をタップしたら...それは焦点が合っていません。このページはContentPageから継承されます(ViewRendererが呼び出されているかどうかはわかりません)。どうすればこれを最もうまくデバッグできますか? Btw、私はXamarin.Forms 1.5.6を使用しています...バグかどうかはわかりません。 – Euridice01