为什么在安卓平台上,当软键盘弹出时 ViewElement 不会滚动到视图中。

Leon Lu (Shanghai Wicresoft Co,.Ltd.) 69,386 信誉分 Microsoft 供应商
2024-02-01T09:18:50.8766667+00:00

在 .net-Maui 中,当我在 scrollView 中添加 ViewElement 并显示键盘时,键盘遮挡了 ViewElement。如果我删除 ScrollView,它可以正常工作,但我无法滚动内容。 在 Xamarin 上,Android 会自动将 ViewElement 滚动到视图中。为什么出现了此变化呢? 我必须在MAUI中做一些不同的事情吗?   下面是代码的示例。

public class TestView : ContentView
    {
        public TestView()
        {
            var layout = new AbsoluteLayout();
            var scrollView = new ScrollView { Content = layout, };
            Content = scrollView;
            var entry = new Entry();
            layout.Add(entry);
            AbsoluteLayout.SetLayoutBounds(entry, new Rect(20, 600, 200, 45));
        }
    }

如果我在scrollview中使用其他布局,例如 RelativeLayout 和 StackLayout,也会有同样的问题。

我希望 ViewElement 自动滚动到视图中。

注意:此问题总结整理于:Why is Android is not automatically scroll ViewElement into view when keyboard appear? - Microsoft Q&A

.NET MAUI
.NET MAUI
一种 Microsoft 开源框架,用于构建跨移动设备、平板电脑、台式机的原生设备应用程序。
50 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Yonglun Liu (Shanghai Wicresoft Co,.Ltd.) 37,111 信誉分 Microsoft 供应商
    2024-02-01T09:25:12.0833333+00:00

    你好,

    在 MAUI 中,如果 TestView 的外层是 StackLayout、VerticalStackLayout 或其他不是继承 ScrollView 的布局,则会出现此问题。 在 Xamarin.Froms 中,无论外部布局是什么,当软键盘弹出时,都可以正常调整页面布局。

    对于此问题,您可以向 MainActivity 类中添加以下代码来解决此问题:

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Window.SetSoftInputMode(Android.Views.SoftInput.AdjustPan);
    }
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助