Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin形式。android上的键盘覆盖了带有自定义背景的条目底部_Xamarin_Background_Xamarin.forms_Renderer_Xamarin.forms.entry - Fatal编程技术网

Xamarin形式。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

我在XF中为Android平台使用了一个自定义背景的条目。当它聚焦时,键盘覆盖了输入的底线

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);
    }