【问题标题】:XF - SignaturePad show strokes only when the touch endsXF - SignaturePad 仅在触摸结束时显示笔划
【发布时间】:2017-10-03 14:20:35
【问题描述】:

我将SignaturePadXamarin.Forms 一起使用,即使在基本的硬件设备上也能正常工作,但我只使用一台设备就遇到了奇怪的行为:三星 Galaxy Tab E 7.0 3G SM-T116 平板电脑。

问题在于 SignaturePad 视图上的笔画仅在从屏幕上释放触摸时才会显示。例如,如果我慢慢地画一条长长的水平线,整个笔划是不可见的,直到我释放屏幕触摸。

有人遇到过类似情况吗?我该如何解决?

非常感谢。

【问题讨论】:

  • 我尝试增大笔画宽度,认为可能是屏幕分辨率问题(最初的笔画可能太细而无法看到),但没有成功
  • 您是否在绘制事件期间以某种方式创建 SignaturePadView?
  • 我不是。我有一个带有 SignaturePadView 的页面,它是在页面初始化时使用其他一些控件创建的。谢谢。
  • 在表单初始化期间或在 OnCreate() 函数中?
  • 嗯...我将分享创建它的页面的代码简化代码。我在 pcl 项目中创建视图组件,而不是在特定平台中。

标签: c# android xamarin.forms signaturepad


【解决方案1】:

问题有点老了,但在 3.0.0 中已解决。

我在 Galaxy Tab A 上遇到过类似问题,已通过升级解决。

【讨论】:

    【解决方案2】:

    我已经通过以下方式实现了 SignaturePadView。

    MainActivity.cs:

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);
    
        Xamarin.Forms.Forms.Init(this.ApplicationContext, savedInstanceState);
    
        signatureView = new SignaturePadView(this);
        signatureView.StrokeWidth = 4;
    
        LinearLayout signatureLayout = (LinearLayout)FindViewById(Resource.Id.signatureLayout);
        signatureLayout.AddView(signatureView);
    
        Button btnSave = FindViewById<Button>(Resource.Id.btnSave);
        btnSave.Click += (sender, e) =>
        {
            SaveInfo();
        };
    
    }
    

    这是我的 Main.axml 中的布局:

    <LinearLayout
                android:orientation="vertical"
                android:minWidth="25px"
                android:minHeight="25px"
                android:layout_width="fill_parent"
                android:layout_height="225.0dp"
                android:layout_weight="1"
                android:id="@+id/signatureLayout"
                android:background="@drawable/logosimg"
                android:gravity="center|bottom" />
        </LinearLayout>
    

    我只是有预感,您正在创建一个新的 SignaturePadView 对象或在用户发生某些事件后将其添加到布局中。

    【讨论】:

    • 感谢您的回答。我在页面初始化时创建它。用户单击一个按钮,然后使用 SignaturePadView 和其他控件打开另一个页面。我的 SignaturePadView 是在共享代码 (PCL) 上创建的,这是我从您的代码中注意到的唯一区别
    • 我有点喜欢在 OnCreate() 的平台特定项目中创建该对象的想法
    • 我还不能发布我的实现,但我会尽快发布。我认为您的方法可以解决我的问题。再次感谢。我会继续搜索 =)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    相关资源
    最近更新 更多