我正在开发一个Android应用程序。现在我正在创建主页,其中我插入了一个具有底部线的Entry
。在我的预览器上,底部线是White
,而在我的手机上它出现为Black
。
所以为了解决这个问题,我决定尝试使用渲染器来修复它。
我在App中创建了一个名为CustomEntryRenderer
的类,它继承自Entry。
然后我在App.Android中创建了一个名为CustomEntryRednererAndroid
的类,它应该更改条目下方线的颜色。但它没有影响到它。我尝试使用在互联网上找到的一些自定义渲染器做同样的事情。
例如,删除底线也不会影响程序:
removing lineMainPage.xaml中的Entry:
<Entry
Grid.Row="4"
Grid.ColumnSpan="2"
TextColor="Silver"
Placeholder="Write Your nickname"
PlaceholderColor="Silver"
/>
自定义入口渲染器:
public class CustomEntryRenderer : Entry
{
}
CustomEntryRendererAndroid:
[assembly: ExportRenderer(typeof(CustomEntryRenderer), typeof(MyEntryRenderer))]
namespace App3.Droid
{
public class MyEntryRenderer : EntryRenderer
{
public MyEntryRenderer(Context context) : base(context) { }
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control == null || e.NewElement == null) return;
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
Control.BackgroundTintList = ColorStateList.ValueOf(Android.Graphics.Color.White);
else
Control.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcAtop);
}
}
}
Android的最佳答案是:在CustomEntryRendererAndroid.cs
中,我不知道为什么要使用Android.Graphic
而不是Xamarin.Forms.Color
。但我认为这不是问题所在。
我已经尝试了几个小时,但无法找到解决方法。希望有任何想法。
typeof(CustomEntryRenderer)
更改为typeof(Entry)
,但在做了这个之后,使用 Live Player 启动我的应用时,Xamarin Live 就会崩溃。每次都是这样,我还尝试了不同的渲染器。此外,您知道为什么预览器显示的行颜色与在手机上启动的应用程序不同吗? - D.WeltrowskiCustomEntryRender
类。之后,我会确保删除bin和obj文件夹并重新构建你的项目。至于Xamarin Live Previewer,上次我尝试使用它时仍然存在很多错误,并且仍在开发中,所以如果可能的话,最好直接部署到设备上。 - Nick Peppers