本文介绍: 在 Xamarin.Forsm for Android显示 PDF 并不像 for IOS 中可以直接使用 WebView 进行显示,所以使用 WebView 是行不通的。多搜索,多探索看看别人的案例虽然不能百分之百解决问题,但可以提供很有效思路

背景

某些情况下,需要用户阅读下发的文件,特别是头文件,这些文件一般都是使用PDF格式下发,这种文件有很重要的一点就是不能更改。这时候需要使用原文件进行展示

Xamarin.Forms Android 中的 WebView 控件是不能直接显示的,但是这并不影响,因为最终文件显示依托于它的继承类 View 类。

解决方案

需要的 Nuget

XamarinLibrary.Xamarin.Android.Github.Barteksc.AndroidPdfViewer
Xamarin.Android.Support.v4

AndroidPdfViewer 包目前还是预览版,需要去使用命令安装
Support.v4 包不是必须,系统目标版本大于 Android9.0 时,才需要引入

在 UI 项目里要做的操作

创建一个自定义控件继承 View,没了。对就这些
然后视图使用自定义控件

平台 Android 项目里要做的操作

  1. 在 Resources 创建 layout 文件夹
  2. layout 文件添加 PDFLayout.xml 文件
  3. 创建 Renderers 文件夹添加 XFAPDFViewRenderer.cs 文件
  4. PDF文件放在 Assets 文件夹下

文件说明

生成操作AndroidResource
自定义工具MSBuild:UpdateGeneratedFiles
在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?&gt;
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.github.barteksc.pdfviewer.PDFView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/pdfView"/>
</RelativeLayout >
using Android.Content;
using Com.Github.Barteksc.Pdfviewer;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using XFA.PdfTest.Controls;
using XFA.PdfTest.Droid.Renderers;

[assembly: ExportRenderer(typeof(XFAPDFView), typeof(XFAPDFViewRenderer))]
namespace XFA.PdfTest.Droid.Renderers
{
    public class XFAPDFViewRenderer : ViewRenderer<XFAPDFView, Android.Widget.RelativeLayout>
    {
        public XFAPDFViewRenderer(Context context) : base(context) { }

        private PDFView pdfView;

        private Android.Widget.RelativeLayout uiLayout;

        protected override void OnElementChanged(ElementChangedEventArgs<XFAPDFView> e)
        {
            var layout = Inflate(Context, Resource.Layout.PDFLayout, null);
            if (pdfView == null)
            {
                uiLayout = layout as Android.Widget.RelativeLayout;
            }

            pdfView = uiLayout.FindViewById<PDFView>(Resource.Id.pdfView);

            pdfView.FromAsset("XXX.pdf").Load();

            SetNativeControl(uiLayout);
        }
    }
}

结语

在 Xamarin.Forsm for Android 中显示 PDF 并不像 for IOS 中可以直接使用 WebView 进行显示,所以使用 WebView 是行不通的。多搜索,多探索看看别人的案例虽然不能百分之百解决问题,但可以提供很有效思路

原文地址:https://blog.csdn.net/qq_43562262/article/details/129186580

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_46486.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注