728x90
반응형
728x170
Handler 는 기존에 사용하던 Renderer 와 비슷한데
Renderer 는 각 기기 특성을 타는 부분을 각각의 Android, iOS 프로젝트에 네이티브 코드로 처리를 할수 있도록 했다
그런데 Handler 는 이를 하나의 파일에서 처리 가능하도록 했다
Android 에서 Entry 컨트롤에 언더라인이 생기게 되는데 이를 없애려면
기존에는 아래처럼 Renderer 를 이용해서 없애야했다.
Renderer 사용예시
using Android.Content;
using Android.Graphics.Drawables;
using APP.Controls;
using APP.Droid.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(CustomEntry), typeof(CustomEntryRenderer))]
namespace APP.Droid.Renderers
{
public class CustomEntryRenderer : EntryRenderer
{
public CustomEntryRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
//Control.SetBackground(null);
}
if (Control != null)
{
GradientDrawable gd = new GradientDrawable();
gd.SetColor(global::Android.Graphics.Color.Transparent);
Control.SetBackground(gd);
}
}
}
}
하지만 Handler 를 이용하면 아래 처럼 간단하게 언더라인을 제거 할수 있다.
MauiProgram.cs
#if ANDROID
// Entry 에서 언더라인 제거
Microsoft.Maui.Handlers.EntryHandler.EntryMapper.AppendToMapping("NoUnderline", (h, v) =>
{
h.NativeView.BackgroundTintList = ColorStateList.ValueOf(Colors.Transparent.ToAndroid());
});
#endif
그런데 Handler 는 익숙해지는데 시간이 걸릴것 처럼 생겨먹었다;;
ButtonHandler 등등 각컨트롤에 대해서 처리가 가능하고 직접 만든 컨트롤도 지정이 가능한것 같다
이는 추후 더 조사하고 테스트 해봐야겠다
* 추가
Entry 의 글자 색을 기기별로 바꾸고 싶을때는 아래처럼 사용한다.
// 기기에 따른 색상 변경
Microsoft.Maui.Handlers.EntryHandler.EntryMapper.AppendToMapping(nameof(IView.Background), (handler, view) =>
{
if (view is Entry)
{
#if ANDROID
handler.NativeView.SetTextColor(Colors.Red.ToNative());
#elif IOS
handler.NativeView.TextColor = Colors.Yellow.ToNative();
#elif WINDOWS
handler.NativeView.Foreground = Colors.Green.ToNative();
#endif
}
});
728x90
반응형
그리드형
'C# > Xamarin Maui' 카테고리의 다른 글
[.NET MAUI] xaml 단에서 x:DataType 과 BindingContext 의 차이 (0) | 2022.03.15 |
---|---|
[.NET MAUI] SfListView Grouping 처리 (0) | 2022.03.13 |
[.NET MAUI] x:Reference 사용 (0) | 2022.03.07 |
[.NET MAUI] x:static 사용하기 (0) | 2022.03.03 |
[.NET MAUI] 플래폼(Android,iOS)에 따른 code 및 xaml 단 처리 방법 (0) | 2022.03.01 |
댓글을 달아 주세요