【问题标题】:file.exists returns false xamarin androidfile.exists 返回错误的 xamarin android
【发布时间】:2020-12-31 05:18:42
【问题描述】:

我正在尝试在我的 Xamarin.android 应用程序中使用字体文件。我想在 itext7 库中使用它。但是我的 setfont 函数出现异常,说它是空的,尽管我已将我的字体文件添加到集合中,所以我尝试使用 file.exist 函数检查我的字体文件是否存在。我试过这段代码:

a = File.Exists("C:/Windows/Fonts/Arial.ttf");
           
            if (a==true)
            {
                Android.App.AlertDialog.Builder alert = new Android.App.AlertDialog.Builder(this);

                alert.SetTitle("exist");

                alert.SetMessage("exists!");
                alert.SetPositiveButton("Okay", (senderAlert, args) =>
                {
                    alert.Dispose();
                });

                _dialog = alert.Create();

                _dialog.Show();
               

            }
            else
            {
                Android.App.AlertDialog.Builder alert = new Android.App.AlertDialog.Builder(this);

                alert.SetTitle("exist");

                alert.SetMessage("doesn't exist!");
                alert.SetPositiveButton("Okay", (senderAlert, args) =>
                {
                    alert.Dispose();
                });

                _dialog = alert.Create();

                _dialog.Show();
            }

结果是该文件不存在。尽管物理存在于上述路径中,并且它是在系统中找到的字体文件,但它不是我下载的文件。查了权限发现目录字体的权限对于里面的所有文件都是只读的。我也尝试使用其他字体。我不明白为什么它返回错误。提前致谢

【问题讨论】:

  • 当您将应用程序部署到移动设备或模拟器时,您将无法访问您的开发机器及其文件系统。
  • 哦对了,所以我必须像控制台应用一样使用才能检查它对吗?
  • 好吧,您可以将结果与控制台应用程序进行比较,但如果您想使用字体,它需要成为您项目的一部分,作为某种资源,因此当您建造。我没有任何使用 Xamarin 的经验,但我确信有办法。

标签: c# file xamarin.android


【解决方案1】:

这里是如何将字体集成到 xamarin Android 中:https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/resources-in-android/fonts

  1. 将字体打包为 Android 资源 - 这可确保该字体始终可供应用程序使用,但会增加 APK 的大小。
  2. 下载字体 - Android 还支持从字体提供程序下载字体。字体提供程序检查字体是否已在设备上。如有必要,字体将被下载并缓存在设备上。此字体可以在多个应用程序之间共享

第一种方式最简单:

将字体打包到 Android APK 可确保它始终可供应用程序使用。通过将文件复制到 Xamarin.Android 项目的 Resources 文件夹中的子目录,将字体文件(.TTF 或 .OTF 文件)添加到 Xamarin.Android 应用程序中,就像任何其他资源一样。字体资源保存在项目 Resources 文件夹的字体子目录中。

如果你想在代码中访问它:

Android.Graphics.Typeface typeface = this.Resources.GetFont(Resource.Font.caveat_regular);
textView1.Typeface = typeface;
textView1.Text = "Changed the font";

【讨论】:

  • 非常感谢先生,我已经阅读了本教程,但我的问题是我需要使用 itext7 库的 pdf 文件的字体,而不是我的 textviews 中的文本。我正在尝试实现教程中提到的方式,但它似乎不起作用
猜你喜欢
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
  • 2016-04-29
相关资源
最近更新 更多