Search code examples
c#androidxamarin.formssignaturepad

XF - SignaturePad show strokes only when the touch ends


I'm using SignaturePad with Xamarin.Forms and it works fine even on basic hardware devices, but I've struggled with a weird behavior with just one device: Samsung Galaxy Tab E 7.0 3G SM-T116 Tablet.

The problem is that the strokes on SignaturePad view are shown only when the touch is released from the screen. For example, if I make a long horizontal side to side line slowly, the whole stroke is invisible until I release the screen touch.

Anyone already had a similar situation? How can I workaround it?

Thanks a lot.


Solution

  • I've implemented the SignaturePadView in the following way.

    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();
        };
    
    }
    

    Here is the layout in my 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>
    

    I just have a hunch that you are creating a new SignaturePadView object or adding it to the layout after some event happens by the user.