Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中使用外部字体_Android_Fonts_Android Widget - Fatal编程技术网

在android中使用外部字体

在android中使用外部字体,android,fonts,android-widget,Android,Fonts,Android Widget,我想在我的应用程序中使用外部字体。我曾尝试使用AssetManager添加新的字体,但没有成功。下面是我的代码: Typeface face; face = Typeface.createFromAsset(getAssets(), "font.otf"); textview.setTypeface(face); 但它没有显示文本 请帮我解决这个问题。好的,Android不支持OpenType。改用TrueType字体 更新:显然OpenType现在至少在某种程度上得到了支持。它最初不受

我想在我的应用程序中使用外部字体。我曾尝试使用
AssetManager
添加新的
字体
,但没有成功。下面是我的代码:

Typeface face;

face = Typeface.createFromAsset(getAssets(), "font.otf");

textview.setTypeface(face);
但它没有显示文本


请帮我解决这个问题。

好的,Android不支持OpenType。改用TrueType字体



更新:显然OpenType现在至少在某种程度上得到了支持。它最初不受支持,因此您需要在应用程序支持的任何Android版本上彻底测试您的字体。

我也遇到了同样的问题。我的字体在安卓系统中也不工作,但我需要它来工作。使用字体编辑器,我将字体中的字符复制到Android-src-2_1中FontSampler示例附带的字体中。它工作得很好


虽然我承认,从知识产权的角度来看,我的方法有问题,但实际上我并没有使用原始字体,因为所有的字符都被替换了,所有对旧字体的引用也被替换了。我曾尝试“查看”两种字体的定义方式,但使所有字体变量匹配也不起作用。因此,在ned中,我使用了原始字体的骨架作为新字体的模板。

Android确实支持OTF(我不确定是哪个SDK版本,但它肯定适用于1.6),我曾使用过一段时间的打字机OTF字体,但渲染效果远不如我最终使用的TTF版本(通过在线字体转换器)准确. 基线到处都是(一些字母比其他字母高出整整2个像素),而在HTC Wildfire等LDPI手机上,由于像素更大,问题被大大放大。

为了方便访问字体,我们需要将其与应用程序捆绑在一起,以便代码能够随后加载它。为此,我们直接在资产中创建字体文件夹

这可能是您的.xml文件

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
    android:id="@+id/DefaultFontText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="Here is some text." />
<TextView
    android:id="@+id/CustomFontText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="Here is some text.">
    </TextView>

android支持otf和ttf两种格式,我体验过这两种格式

tv3 = (TextView)findViewById(R.id.tv1);
    Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/TRAJANPRO-BOLD.OTF");
    tv3.setTypeface(typeFace);

这是我在英语和本地语言中使用的步骤

使用Fontinator it支持OTF和TTF字体

这是一个Android库,可以方便地使用自定义字体


所以你说我的方向是对的。我只需要使用ttf文件而不是otf???是的。根据您的代码,您需要将字体放在资产/目录的根目录中,但如果字体不兼容,则可以使用兼容字体。错误消息表明模拟器与adb或Eclipse之间存在通信困难,这与字体无关。下载后,您会发现一个Android项目显示加载TrueType字体。另外请注意,Android 1.6现在似乎允许您从APK外部加载字体(例如,您单独下载的字体)。如何从库项目访问字体??事实并非如此work@Maxwell:我不相信库项目的资产可用于使用库的应用程序。这很好,但将1000多台电视更改为自己的自定义电视。。。不太方便..为了保持整洁,您可以在资产/字体文件夹中使用字体并访问字体;face=Typeface.createFromAsset(getAssets(),“fonts/”+“font.otf”);textview.setTypeface(face);
tv3 = (TextView)findViewById(R.id.tv1);
    Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/TRAJANPRO-BOLD.OTF");
    tv3.setTypeface(typeFace);