我在Android上有一个Xamarin.Forms项目,我想使用" AdjustResize"作为处理软键盘的默认方法。我这样设置OnCreate
就像这样:
[Activity(Label = "TestWhite.Droid", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
FormsAppCompatActivity.ToolbarResource = Resource.Layout.toolbar;
FormsAppCompatActivity.TabLayoutResource = Resource.Layout.tabs;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
Window.SetSoftInputMode(SoftInput.AdjustResize);
LoadApplication(new App());
}
}
由于我已更新为AppCompat
,AdjustResize
无法与API 22一起使用,但它仍可与API 19配合使用。
使用只包含一个页面的应用程序可以非常轻松地测试问题,该页面包含滚动视图和页面底部的编辑器:
public MainPage()
{
InitializePage();
}
void InitializePage()
{
var editor = new Editor
{
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
HeightRequest = 200,
};
var tallLayout = new StackLayout
{
HorizontalOptions = LayoutOptions.FillAndExpand,
Orientation = StackOrientation.Horizontal,
HeightRequest = 450,
BackgroundColor = Color.Lime,
};
var layout = new StackLayout
{
Orientation = StackOrientation.Vertical,
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
Children = { tallLayout, editor },
};
var scrollView = new ScrollView
{
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
};
scrollView.Content = layout;
Content = scrollView;
}
当用户点击Editor
时,使用API 19,视图会被推高,以便用户可以看到他正在写的内容。相反,使用API 22,键盘只会显示在视图上,隐藏Editor
。关于这种行为背后原因的任何想法?
答案 0 :(得分:3)
在MainActivity的OnCreate方法中,您应将输入模式设置为AdjustResize。然后,为了处理报告here的android bug,你可以使用下面的实用程序类(最初由@ user1658602从java代码转换)。快乐的编码!
$serials