-->

XF - SignaturePad show strokes only when the touch

2019-04-05 07:56发布

问题:

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.

回答1:

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.