所以我正在开发Android应用程序。现在我正在创建MainPage,我插入Entry
,其中一直有底线。我预览器的底线是White
,而在我的手机上,它似乎是Black
。
因此,要解决此问题,我决定使用渲染器,看看我是否可以修复它。
我在应用程序中创建了一个名为CustomEntryRenderer
的类,它继承自Entry。
然后我在App.Android中创建了一个名为CustomEntryRednererAndroid
的Class,它应该改变底部入口线的颜色。但它并没有影响它。我尝试使用我在互联网上找到的一些自定义渲染器。
例如,删除底线也不会影响程序: removing line
从MainPage.xaml进入:
<Entry
Grid.Row="4"
Grid.ColumnSpan="2"
TextColor="Silver"
Placeholder="Write Your nickname"
PlaceholderColor="Silver"
/>
CustomEntryRenderer:
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);
}
}
}
Top answer for Android
由于某些原因CustomEntryRendererAndroid.cs
我也必须使用Android.Graphic
代替Xamarin.Forms.Color
。但我不认为这是问题所在。
我现在已经尝试了几个小时,无法找到解决这种情况的方法。 非常感谢任何想法。
答案 0 :(得分:4)
在xaml中,您使用的是默认的Entry
控件,而不是您的CustomEntryRenderer
,这是您的渲染器所影响的。此外,您可能希望重命名它,因为它实际上不是您的渲染器,而是您的自定义控件。
要解决您的问题,您可以将渲染器typeof(CustomEntryRenderer)
更改为typeof(Entry)
,以便默认情况下影响应用中的所有Android条目。例如,这适用于所有条目的测试应用程序:
[assembly: ExportRenderer(typeof(Entry), typeof(MyEntryRenderer))]
namespace YourNameSpace
{
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);
}
}
}
另一个选项是在MainPage
中切换您的xaml代码以实际使用您的自定义控件。例如,<local:CustomEntryRenderer/>
答案 1 :(得分:1)
将其添加到 Styles.xml 中将对其进行全局修复
<item name="colorControlNormal">#1BB8A3</item>"