【发布时间】: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