【问题标题】:In Xamarin.Android, how to ensure SoftInput AdjustResize works correctly on Keyboard's up/down event?在 Xamarin.Android 中,如何确保 SoftInput AdjustResize 在键盘的向上/向下事件中正常工作?
【发布时间】:2020-11-23 16:34:24
【问题描述】:

我们需要完成的事情:

  • 作为用户,我想在屏幕上看到最大尺寸的图片,从屏幕底部到标题底部

  • 当键盘向上或向下时,图片应自行调整大小,以便使用最大空间始终完全可见。

我已经按照以下步骤在一个迷你项目中完成了这项工作:

1 - 在 Android.manifest.xml 应用程序属性中添加以下属性:

android:windowSoftInputMode="adjustResize"

2 - 在 MainActivity OnCreate 事件处理程序中添加这行代码:

Window.SetSoftInputMode(SoftInput.AdjustResize);

3 - 在 ImageView 对象中使用此布局属性:

android:layout_weight="1"

这在迷你项目中运行良好,但是当我将该代码移植到我们的实际项目时,它就不起作用了。当键盘提示时,图片和表头好像向上滚动了。

图片未调整大小,图片不完全可见,页眉根本不可见。

实际项目的主要区别在于它使用了MVVMCross,并且没有MainActivity类。有一个 MainApplication 类声明为:

public class MainApplication : MvxAndroidApplication<Setup, App>

我无法在此处添加 Window.SetSoftInputMode,因为它显示:“CS0120:非静态字段、方法或属性 'Window.SetSoftInputMode(SoftInput)' 需要对象引用””

所以我尝试在 View Activity 中使用它,如下所示:

[Activity(Label = "PhotoCaptionView", WindowSoftInputMode = SoftInput.AdjustResize, ScreenOrientation = ScreenOrientation.Portrait, Theme = "@style/IM.Theme.Main", LaunchMode = LaunchMode.SingleTask)]
public class EditPostView : BaseIMActivity<EditPostViewModel> 
protected override void OnCreate(Bundle bundle)
{
    Window.SetSoftInputMode(SoftInput.AdjustResize);
    base.OnCreate(bundle);
}

请注意,我在两个地方设置 SoftInput.AdjustResize,作为装饰器和内联。

我还在 Android 清单中添加了该属性,但似乎没有使 AdjustResize 起作用。 我不知道还能尝试什么。

【问题讨论】:

    标签: android android-layout xamarin xamarin.android mvvmcross


    【解决方案1】:

    问题在于设置了此属性的 style.xml 文件:

    <item name="android:windowFullscreen">true</item>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      相关资源
      最近更新 更多