微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xamarin.android中资源目录的路径

如何解决xamarin.android中资源目录的路径

我需要我的资源目录的路径来访问其中的fonts文件夹,就像下面的代码一样:

PdfFont russian = PdfFontFactory.createFont(
    "src/main/resources/fonts/FreeSans.ttf","CP1251",true);

,但在Xamarin.android中。我尝试了以下方法

string uri = "android.resource://" + this.PackageName + "/font/ARIAL.TTF";
PdfFont russian = PdfFontFactory.CreateFont(
     uri,true);

但不起作用。我也尝试了这段代码

  var path2 = global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
            filePath = System.IO.Path.Combine(path2.ToString(),"myfile4.pdf");
            stream = new FileStream(filePath,FileMode.Create);
            PdfWriter writer = new PdfWriter(stream);
            PdfDocument pdf2 = new iText.Kernel.Pdf.PdfDocument(writer);
            Document document2 = new Document(pdf2,PageSize.A4);
            AssetManager assets = this.Assets;
            string content;
            Stream stream2 = assets.Open("ARIAL.TTF");
            var memorystrm = new MemoryStream();
            stream2.copyTo(memorystrm);
            byte[] t = memorystrm.ToArray();
            Toast.MakeText(this,t.Length.ToString(),ToastLength.Long);
            if (t != null)
            {
                PdfFont russian = PdfFontFactory.CreateFont(t,"UTF-8",true);
                document2.SetFont(russian);
                Paragraph p = new Paragraph("Hello World! ")
                    .Add(new Text("صباح! ").SetFontSize(14)).Add(new Text("Bonjour le monde! ").SetFontSize(10));
                document2.Add(p);
                document2.Close();
                Toast.MakeText(this,"done",ToastLength.Long);
            }
            else
            {
                Toast.MakeText(this,"error",ToastLength.Long);
            }

没有代码被执行

解决方法

Xamarin.Android项目的文件夹路径与本机Android项目不同。

如果要将字体文件保存在项目中以访问文件,请尝试将文件保存在 Asset 文件夹中。为此文件设置 Build Action AndroidAsset

string content;
AssetManager assets = this.Assets;
using (StreamReader sr = new StreamReader(assets.Open("read_asset.txt")))
{
    content = sr.ReadToEnd();
}

查看教程:

https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/resources-in-android/android-assets?tabs=windows

更新

我将添加我的代码,该代码无效。没有执行代码

似乎您忘记添加.Show()之类的Toast.MakeText(this,"done",ToastLength.Long).Show()代码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。