Maui android 更改滚动方向为 neither 不工作

Wenyan Zhang (Shanghai Wicresoft Co,.Ltd.) 27,126 信誉分 Microsoft 供应商
2024-02-29T09:06:45.6466667+00:00

大家好。Maui 17.9 预览版 5 和 android 34。我试图将滚动更改为 neither,myscroll.orientation = scrollorientation.neither,但这不起作用。请对此提供帮助,非常感谢。   此问题总结整理于:Maui android change scrolling to neither not working - Microsoft Q&A

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

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

    你好,

    这是一个GitHub中的已知问题:[Android] ScrollView Orientation=Neither not working · Issue #18418 · dotnet/maui · GitHub

    对于此问题,您可以使用 Android 的原生方法在 ScrollView 中禁用或启用滚动。请参考以下步骤。

    步骤 1。在 Android 文件夹下为 ScrollView 创建一个触摸监听器。

    internal class MyTouchListener : Java.Lang.Object, IOnTouchListener
    {
        public AndroidX.Core.Widget.NestedScrollView NestedScroView { get; set; }
        public bool ScrollEnabled { get; set; }
        public MyTouchListener(bool enabled, NestedScrollView view)
        {
            NestedScroView = view;
            ScrollEnabled = enabled;
        }
        public bool OnTouch(global::Android.Views.View? v, MotionEvent? e)
        {
            if (ScrollEnabled==true)
            {
                return NestedScroView.OnTouchEvent(e);
            }
            else
            {
                return true; // If it returns true directly, ScrollView deactivates scrolling behavior.
            }
           
        }
    }
    

    第2步。通过 Handler 设置禁用或启用滚动。

    <ScrollView x:Name="scroll">
    // disable scrolling
                scroll.HandlerChanged += (sender, e) =>
                {
    #if ANDROID
                    var s = scroll.Handler.PlatformView as AndroidX.Core.Widget.NestedScrollView;
                    if (s != null)
                    {
                        s.SetOnTouchListener(new MyTouchListener(false,s));
                    }
    #endif
                };
    // enable scrolling
    #if ANDROID
                var s = scroll.Handler.PlatformView as AndroidX.Core.Widget.NestedScrollView;
                if (s != null)
                {
                    s.SetOnTouchListener(new MyTouchListener(true, s));
                }
    #endif
    

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

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助