Xamarin.android xamarin.forms android-线性布局未按预期显示

Xamarin.android xamarin.forms android-线性布局未按预期显示,xamarin.android,xamarin.forms,android-linearlayout,Xamarin.android,Xamarin.forms,Android Linearlayout,我有这个自定义键盘的代码 它的xamarin.forms用于android 我希望键盘从页面底部显示,并在需要时提高输入 结果是,键盘显示在页面顶部,如果条目位于顶部,则覆盖条目 ~ 公共类CustomEntryRenderer:EntryRenderer { 受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e) { 基础。一个要素发生变化(e); if(Control==null) 返回; Android.InputMethodServices

我有这个自定义键盘的代码

它的xamarin.forms用于android

我希望键盘从页面底部显示,并在需要时提高输入

结果是,键盘显示在页面顶部,如果条目位于顶部,则覆盖条目

~

公共类CustomEntryRenderer:EntryRenderer { 受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e) { 基础。一个要素发生变化(e); if(Control==null) 返回; Android.InputMethodServices.Keyboard numericKeyboard=新的Android.InputMethodServices.Keyboard(Control.Context,Resource.Xml.keyboard2); CustomKeyboardView numericKeyboardView=新的CustomKeyboardView(Control.Context,null); numericKeyboardView.Id=控件.Id; 数字键盘视图。键盘=数字键盘; numericKeyboardView.Visibility=ViewState.Gone; numericKeyboardView.PreviewEnabled=false; ///////////////////////////////////////////////// //这是布局创建 //////////////////////////////////////////////// LinearLayout.LayoutParams lp=新的LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent,ViewGroup.LayoutParams.WrapContent);//可能在所有 lp.重力=重力滞后底部; lp.BottomMargin=0; ///////////////////////////////////////////////// Activity=this.Context作为活动; activity.AddContentView(数字键盘视图,lp); Control.Touch+=(发送器,ex2)=> { 如果(numericKeyboardView.Visibility==ViewState.Gone) { //Xamarin.Forms.Animation Animation=Android.Views.Animations.AnimationUtils.LoadAnimation( Android.Views.Animations.Animation=Android.Views.Animations.AnimationUtils.LoadAnimation( 这,背景,, Resource.Animation.slide\u在\u底部 ); numericKeyboardView.ShowWithAnimation(动画); numericKeyboardView.Visibility=视图状态.Visible; } ex2.Handled=true; }; } } ~

我希望键盘从页面底部显示,并在需要时提高输入

您需要将
numericKeyboardView
包装为一个,并设置密码规则

OnElementChanged
方法中,添加以下代码:

//Create RelativeLayout for Keyboard
Android.Widget.RelativeLayout rl = new Android.Widget.RelativeLayout(this.Context);
//Create the LayoutParams for Keyboard
Android.Widget.RelativeLayout.LayoutParams rlp = new Android.Widget.RelativeLayout.LayoutParams(LayoutParams.FillParent, LayoutParams.WrapContent);
//set the AlignParentBottom rule
rlp.AddRule(LayoutRules.AlignParentBottom);
//set the LayoutParams to Keyboard
numericKeyboardView.LayoutParameters = rlp;
//add the keyboard to RelativeLayout
rl.AddView(numericKeyboardView);
//get current activity
Activity activity = this.Context as Activity;
//Add the Layout View to activity
activity.AddContentView(rl,rlp);
//Create RelativeLayout for Keyboard
Android.Widget.RelativeLayout rl = new Android.Widget.RelativeLayout(this.Context);
//Create the LayoutParams for Keyboard
Android.Widget.RelativeLayout.LayoutParams rlp = new Android.Widget.RelativeLayout.LayoutParams(LayoutParams.FillParent, LayoutParams.WrapContent);
//set the AlignParentBottom rule
rlp.AddRule(LayoutRules.AlignParentBottom);
//set the LayoutParams to Keyboard
numericKeyboardView.LayoutParameters = rlp;
//add the keyboard to RelativeLayout
rl.AddView(numericKeyboardView);
//get current activity
Activity activity = this.Context as Activity;
//Add the Layout View to activity
activity.AddContentView(rl,rlp);