0
点赞
收藏
分享

微信扫一扫

Xamarin.Forsm for Android 显示 PDF


背景

某些情况下,需要让用户阅读下发的文件,特别是红头文件,这些文件一般都是使用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 文件夹下

文件说明

  • PDFLayout.xml 属性设置

生成操作:​​AndroidResource​​​ 自定义工具:​​MSBuild:UpdateGeneratedFiles​

Xamarin.Forsm for Android 显示 PDF_pdf

  • PDF文件设置
    设置生成操作:​​AndroidAsset​​ 即可
  • PDFLayout.xml 文件内容:

<?xml version="1.0" encoding="utf-8"?>
<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 >

  • XFAPDFViewRenderer.cs文件内容:

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 是行不通的。多搜索,多探索,看看别人的案例虽然不能百分之百解决问题,但可以提供很有效的思路。


举报

相关推荐

0 条评论