关于 Android Studio:Android Studio – 在片段中使用资产管理器设置自定义字体

Android Studio - Set custom fonts with asset manager in fragment

我正在重写我的一个项目,以合并用于平板电脑的片段。我还决定开始使用 Android Studio 进行转换。非常简单,但我在设置自定义字体这一非常简单的任务上遇到了问题。

我从这些开始:
android中的自定义字体和
assets 文件夹及其子文件夹中的文件列表以及此为 Android 片段设置自定义字体

在 Eclipse 中,我的类扩展了 Activity,我在 OnCreate 中执行了以下操作,没有任何问题。(有一个目录和文件 "assets/FUT_R.ttf")

1
2
3
TextView tv=(TextView)findViewById(R.id.someTextView);
Typeface font = Typeface.createFromAsset(getAssets(),"FUT_R.ttf");
tv.setTypeface(font);

现在尝试将此 Activity 转换为 ActionBarActivity(带有 V7 支持库的片段),并且我已将上述代码更改为此。 (其中 view 是具有一个用于手机的 Framelayout 的膨胀布局)

1
2
3
TextView tv=(TextView) view.findViewById(R.id.someTextView);
Typeface font = Typeface.createFromAsset(getActivity().getAssets(),"FUT_R.ttf");
tv.setTypeface(font);

它在运行时与可爱的 java.lang.RuntimeException: native typeface cannot be made 一起崩溃,即使我在我的新项目中创建了 \\'assets\\' 目录,其根目录中有 FUT_R.ttf。

为了确认资产管理器,我尝试了以下代码:

1
2
3
4
5
6
7
8
9
10
String[] f = null;
                try {
                    f = getActivity().getAssets().list("");
                }
                catch (IOException e){
                    e.printStackTrace();
                }
                for(String f1:f){
                    Log.i("names",f1);
                }

得到以下输出:

1
2
3
07-26 07:40:40.134    2114-2114/com.myapp I/names: images
07-26 07:40:40.134    2114-2114/com.myapp I/names: sounds
07-26 07:40:40.134    2114-2114/com.myapp I/names: webkit

我很困惑,因为在我的 \\'assets\\' 目录或项目中没有这些文件和/或目录。显然错误是系统找不到我的字体文件。我究竟做错了什么?任何方向都将不胜感激,我在这个愚蠢的问题上浪费了太多时间。

谢谢!


我终于偶然发现了这个:Load a simple text file in Android Studio

指出 Android Studio 中的资产文件夹显然已更改。它需要在 yourapp/src/main/assets 下创建,而不是它在根应用程序文件夹中的正常位置(与 libs、src 等相同的级别)。希望这对其他人有帮助。我浪费了很多时间!