ZXingBarcodeImageView(二维码)在iOS上显示但在Android上没有显示(Xamarin.Forms)

问题描述 投票:1回答:1

在Xamarin.Forms应用程序中显示QR码的这段代码可以在iOS上运行,但不适用于Android:

let barCode = ZXingBarcodeImageView(HorizontalOptions = LayoutOptions.FillAndExpand,
                                    VerticalOptions = LayoutOptions.FillAndExpand,
                                    BarcodeFormat = ZXing.BarcodeFormat.QR_CODE,
                                    BarcodeValue = foo)
barCode.BarcodeOptions.Width <- 500
barCode.BarcodeOptions.Height <- 500
mainLayout.Children.Add(barCode)

日志中没有错误,没有抛出异常。尝试了许多高度和宽度以及不同的LayoutOptions无济于事。我该怎么调试呢?

xamarin xamarin.forms f# xamarin.android qr-code
1个回答
2
投票

幸运的是,我只需要在我自己的Xamarin.Forms项目中使用ZXing.Net.Mobile。我设法用下一个C#代码显示iOS和Android的QRCode:

ZXingBarcodeImageView GenerateQR(string codeValue)
{
    var qrCode = new ZXingBarcodeImageView
    {
        BarcodeFormat = BarcodeFormat.QR_CODE,
        BarcodeOptions = new QrCodeEncodingOptions
        {
            Height = 350,
            Width = 350
        },
        BarcodeValue = codeValue,
        VerticalOptions = LayoutOptions.CenterAndExpand,
        HorizontalOptions = LayoutOptions.CenterAndExpand
    };
    // Workaround for iOS
    qrCode.WidthRequest = 350;
    qrCode.HeightRequest = 350;
    return qrCode;
}

请注意,此库中有一个知道的issue,您必须明确设置WidthRequest和HeightRequest。

P.S。:或多或少同样的问题也被讨论过here

© www.soinside.com 2019 - 2024. All rights reserved.