调整大小调整在API 22中与Appamaat在Xamarin.Forms上不起作用

时间:2016-04-05 07:20:24

标签: android xamarin android-appcompat xamarin-forms

我在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());
  }
}

由于我已更新为AppCompatAdjustResize无法与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。关于这种行为背后原因的任何想法?

1 个答案:

答案 0 :(得分:3)

在MainActivity的OnCreate方法中,您应将输入模式设置为AdjustResize。然后,为了处理报告here的android bug,你可以使用下面的实用程序类(最初由@ user1658602从java代码转换)。快乐的编码!

$serials