Xamarin安卓端左对齐Entry的android:autofilledHighlight透明设置失效问题
问题原因
该问题不属于配置遗漏,是Android 8.0~11版本的原生系统渲染Bug,Xamarin.Forms作为原生控件的封装层会同步触发该问题:
- 系统绘制自动填充高亮时,对左对齐/默认对齐的输入框会硬编码使用浅黄色高亮色,不会读取主题中配置的
android:autofilledHighlight属性 - 居中对齐的输入框因文字绘制区域的计算逻辑不同,会走自定义高亮读取逻辑,所以你配置的透明属性可以正常生效
解决方案
方案1:全局自定义Entry渲染器(推荐)
在Android平台项目中添加自定义渲染器,强制所有Entry的自动填充高亮为透明,配置优先级高于全局主题:
[assembly: ExportRenderer(typeof(Entry), typeof(CustomEntryRenderer))] namespace 你的项目实际命名空间.Droid.Renderers { public class CustomEntryRenderer : EntryRenderer { public CustomEntryRenderer(Context context) : base(context) { } protected override void OnElementChanged(ElementChangedEventArgs<Entry> e) { base.OnElementChanged(e); if (Control != null) { Control.AutofilledHighlight = new ColorDrawable(Android.Graphics.Color.Transparent); } } } }
方案2:单控件单独配置
如果不需要全局生效,可直接在XAML中针对左对齐的Entry添加平台特定配置:
<Entry x:Name="ConfirmEmail"> <Entry.Android> <OnPlatform x:TypeArguments="AndroidSpecific.Entry" AutofilledHighlight="Transparent"/> </Entry.Android> </Entry>
内容的提问来源于stack exchange,提问作者Dan Scott
相关产品推荐
相关产品推荐

