Xamarin形式。android上的键盘覆盖了带有自定义背景的条目底部
我在XF中为Android平台使用了一个自定义背景的条目。当它聚焦时,键盘覆盖了输入的底线Xamarin形式。android上的键盘覆盖了带有自定义背景的条目底部,xamarin,background,xamarin.forms,renderer,xamarin.forms.entry,Xamarin,Background,Xamarin.forms,Renderer,Xamarin.forms.entry,我在XF中为Android平台使用了一个自定义背景的条目。当它聚焦时,键盘覆盖了输入的底线 public class MessageEntryRenderer : EntryRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Entry> e) { base.OnElementChanged(e); if (e.OldElement != nul
public class MessageEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || this.Element == null)
return;
Control.Gravity = DefaultGravity;
var MessageEntry = Element as MessageEntry;
UpdateBackground(MessageEntry);
...
}
private void UpdateBackground(MessageEntry MessageEntry)
{
if (_renderer != null)
{
_renderer.Dispose();
_renderer = null;
}
_renderer = new BorderRenderer();
//Set to background object of type GradientDrawable
Control.SetBackground(_renderer.GetBorderBackground(MessageEntry.BorderColor, MessageEntry.BackgroundColor, MessageEntry.BorderWidth, MessageEntry.BorderRadius));
} }
public类MessageEntryRenderer:EntryRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement!=null | | this.Element==null)
返回;
Control.Gravity=DefaultGravity;
var MessageEntry=元素作为MessageEntry;
UpdateBackground(MessageEntry);
...
}
私有void UpdateBackground(MessageEntry MessageEntry)
{
如果(_渲染器!=null)
{
_renderer.Dispose();
_渲染器=空;
}
_渲染器=新的边界渲染器();
//设置为GradientDrawable类型的背景对象
Control.SetBackground(_renderer.GetBorderBackground(MessageEntry.BorderColor,MessageEntry.BackgroundColor,MessageEntry.BorderWidth,MessageEntry.BorderRadius));
} }
图片:
我需要显示底线。我尝试这样添加填充:
private void updateadding(MessageEntry MessageEntry)
{Control.SetPadding((int)Forms.Context.ToPixels(MessageEntry.LeftPadding),10,
(int)Forms.Context.ToPixels(MessageEntry.RightPadding),0);
}
但它是为条目内的文本填充的。我修复了它。
问题在于输入的填充。底部和顶部为0。我将其设置为如下代码所示:
private void UpdatePadding(MessageEntry MessageEntry)
{
Control.SetPadding((int)Forms.Context.ToPixels(MessageEntry.LeftPadding), Control.PaddingTop/3,
(int)Forms.Context.ToPixels(MessageEntry.RightPadding), Control.PaddingTop/3);
}