背景
某些情况下,需要让用户阅读下发的文件,特别是红头文件,这些文件一般都是使用PDF格式下发,这种文件有很重要的一点就是不能更改。这时候就需要使用原文件进行展示。
Xamarin.Forms Android 中的 WebView 控件是不能直接显示的,但是这并不影响,因为最终文件的显示依托于它的继承类 View 类。
解决方案
需要的 Nuget 包
XamarinLibrary.Xamarin.Android.Github.Barteksc.AndroidPdfViewer
Xamarin.Android.Support.v4
AndroidPdfViewer 包目前还是预览版,需要去使用命令安装
Support.v4 包不是必须,当系统目标版本大于 Android9.0 时,才需要引入
在 UI 项目里要做的操作
在平台 Android 项目里要做的操作
- 在 Resources 创建 layout 文件夹
- 在 layout 文件里添加 PDFLayout.xml 文件
- 创建 Renderers 文件夹并添加 XFAPDFViewRenderer.cs 文件
- PDF文件放在 Assets 文件夹下
文件说明
生成操作:AndroidResource
自定义工具:MSBuild:UpdateGeneratedFiles
<?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 >
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进行投诉反馈,一经查实,立即删除!