如何在Android Studio中使用自定义字体

我试图在Android Studio中使用自定义字体,就像我们在Eclipse中所做的一样。 但不幸的是无法弄清楚“资产”文件夹的位置!

以下是解决这个问题的几个步骤:

  1. 转到(项目文件夹)
  2. 然后, app> src> main
  3. 创build文件夹'资产>字体'文件夹。
  4. 把你的'abc.ttf'放到字体文件夹中。

    AssetManager am = context.getApplicationContext().getAssets(); typeface = Typeface.createFromAsset(am, String.format(Locale.US, "fonts/%s", "abc.ttf")); setTypeface(typeface); 

    或者尝试这种方式:

      TextView tx = (TextView)findViewById(R.id.textview1); Typeface custom_font = Typeface.createFromAsset(getAssets(), "fonts/abc.ttf"); tx.setTypeface(custom_font); 

https://i.stack.imgur.com/i6XNU.png 1.select文件>新build>文件夹>资产文件夹

2.点击结束

3.右键点击assets并创build一个名为fonts的文件夹

input您的字体文件资产 > 字体

5.然后使用下面的代码来改变你的textView的字体

  TextView myTextView = (TextView) findViewById(R.id.textView); Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf"); myTextView.setTypeface(typeface); 

你好,我们有一个更好的方法来在android上的EditTexts和TextViews上应用字体,并将其应用于整个项目中。

首先你需要制作字体文件夹。 这是步骤。

1:转到(项目文件夹)然后app> src> main

2:在主文件夹中创build名为“assets / fonts”的文件夹。

3:把你的字体放入字体文件夹。 这里我有'MavenPro-Regular.ttf'

以下是在EditText上应用自定义字体的步骤,并使用这种方法可以在每个input上应用字体。

1:创build一个MyEditText类(你的首选名字…)

2:它扩展了EditText

3:应用你的字体

这里是代码示例;

 public class MyEditText extends EditText { public MyEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public MyEditText(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MyEditText(Context context) { super(context); init(); } private void init() { if (!isInEditMode()) { Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/MavenPro-Regular.ttf"); setTypeface(tf); } } } 

在这里是代码如何使用它。

 MyEditText editText = (MyEditText) findViewById(R.id.editText); editText.setText("Hello"); 

或者在你的xml文件中

  <MyEditText android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:textColor="#fff" android:textSize="16dp" android:id="@+id/editText" /> 

您可以使用简单易用的EasyFonts第三方库来为您的TextView设置各种自定义字体。 通过使用这个库,您不必担心下载并将字体添加到assets / fonts文件夹中。 还有关于字体对象的创build。 您也可以免费创build资产文件夹。

只是:

 TextView myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setTypeface(EasyFonts.robotoThin(this)); 

这个库提供了许多种类的字体。

您可以使用Calligraphy库在Android中添加自定义字体。

首先你要将你的自定义字体添加到assets /中

然后在XML中

 <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" fontPath="fonts/Roboto-Bold.ttf"/> 

注意:它会在Android Studio中出错,所以在onCreate()方法的Application类中使用CalligraphyConfig定义默认字体。

 @Override public void onCreate() { super.onCreate(); CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf") .setFontAttrId(R.attr.fontPath) .build() ); //.... } 

有很多方法可以在字段上设置自定义字体系列,下面是我使用的步骤

要将字体添加为资源,请在Android Studio中执行以下步骤:

1)右键单击res文件夹并转到新build> Android资源目录。 出现“新build资源目录”窗口。

2)在资源types列表中select字体,然后单击确定。

注意:资源目录的名称必须是字体。

3)将字体文件添加到字体文件夹中。 在这里输入图像描述

而你直接调用你的xml文件的字体

在这里输入图像描述

注意:但是你需要以下的东西:1.你的Android Studio 3.0以上的canary。

  1. 在您的活动中扩展AppCompatActivity。

  2. 像这样更新你的gradle文件。

    compileSdkVersion 26 buildToolsVersion“26.0.1”defaultConfig {
    minSdkVersion 19 targetSdkVersion 26 versionCode 1 versionName“1.0”testInstrumentationRunner“android.support.test.runner.AndroidJUnitRunner”}

    • buildtools版本高于26,最低targetSdkVersion需要26
  3. 在build.gradle文件中添加依赖关系。

    classpath'com.android.tools.build:gradle:3.0.0-beta4'

  4. gradle-wrapper.properties

    distributionUrl = HTTPS://services.gradle.org/distributions/gradle-4.1-all.zip

根据Android O中的新function,XML中的字体资源可作为新function使用。

要将字体添加为资源,请在Android Studio中执行以下步骤:

1)右键单击res文件夹并转到新build> Android资源目录 。 出现“新build资源目录”窗口。

2)在资源types列表中select字体 ,然后单击确定。

注意:资源目录的名称必须是字体。

3)将字体文件添加到字体文件夹中。

您可以借助新的资源types字体访问字体资源。 例如,要访问字体资源,请使用@ font / myfont或R.font.myfont。

例如。 Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);

与支持库26.0(和Android O,)字体可以很容易地从资源加载 在这里输入图像描述

字体typeface = ContextCompat.getFont(Context context,int fontResourceId)

更多信息可以在这里find。

  1. 在项目 – >应用程序(或您的应用程序名称) – > src – >主 – >右键单击 – >新build – >目录中创build文件夹资产。
  2. 然后在名为“字体”的资产内创build一个新的目录。

将字体分配给textView:

 TextView textView = (TextView) findViewById(R.id.your_textView); final Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/your_font_name"); 

your_font_name包含字体扩展名。

如果你对Android非常陌生,像我这样可能会有点棘手。 确保你打电话给:

 TextView myTextView = (TextView) findViewById(R.id.textView); Typeface typeface=Typeface.createFromAsset(getAssets(), "fonts/your font.ttf"); myTextView.setTypeface(typeface); 

方法,如onCreate

我想为Android-O和Android Studio 2.4添加我的答案

  1. res文件夹下创build名为font的文件夹。 下载你想要添加到你的项目示例谷歌字体的各种字体

  2. 在你的xml用户字体家族里面

    例如:

     <TextView android:fontFamily="@font/indie_flower" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:text="@string/sample_text" /> 

3.如果您希望以编程方式使用以下代码

 Typeface typeface = getResources().getFont(R.font.indie_flower); textView.setTypeface(typeface); 

欲了解更多信息,请点击链接到我的博客文章Android Studio 2.4的Android字体样式

Android 8.0(API 26)引入了与字体相关的新function。

1)字体可以用作资源。

2)可下载的字体。

如果你想在android应用程序中使用外部字体,你可以在apk中包含字体文件或者configuration可下载的字体。

在APK中包含字体文件 :您可以下载字体文件,将其保存在res / font filer中,定义字体系列和使用样式中的字体系列。

有关使用自定义字体作为资源的更多详细信息,请参阅http://www.zoftino.com/android-using-custom-fonts

configuration可下载字体 :通过提供字体提供者详细信息来定义字体,添加字体提供者证书并使用样式中的字体。

有关可下载字体的更多详细信息,请参阅http://www.zoftino.com/downloading-fonts-android

首先创buildassets文件夹,然后在其中创buildfonts文件夹。

那么你可以设置fontassetsdirectory如下:

 public class FontSampler extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); TextView tv = (TextView) findViewById(R.id.custom); Typeface face = Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf"); tv.setTypeface(face); File font = new File(Environment.getExternalStorageDirectory(), "MgOpenCosmeticaBold.ttf"); if (font.exists()) { tv = (TextView) findViewById(R.id.file); face = Typeface.createFromFile(font); tv.setTypeface(face); } else { findViewById(R.id.filerow).setVisibility(View.GONE); } } } 

对于新的读者

您可以使用此库Gloxey自定义字体视图

gradle依赖

  dependencies{ compile 'io.gloxey.cfv:custom-font-views:1.0.2' } 

如何使用?

创build文件夹资产 – > 字体 。 将您的字体复制到字体文件夹。

使用属性应用程序:font_name =“font_name_string”在视图上应用字体。

  <!--Font Names in srings.xml--> <string name="aadhunik">aadhunik.ttf</string> <string name="kung_fool">kungfool.ttf</string> <string name="skrova">skrova.otf</string> <string name="painting_in_the_sun_light">painting_in_the_sun_light.ttf</string> <!--Include views in layout.xml--> <io.gloxey.cfv.CFTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Aadhunik" android:textColor="#ff00" android:textSize="40sp" app:font_name="@string/aadhunik" /> <io.gloxey.cfv.CFButton android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Kung Fool" android:textColor="#154748" app:font_name="@string/kung_fool" /> <io.gloxey.cfv.CFEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Hello world" android:textSize="30sp" app:font_name="@string/skrova" /> <io.gloxey.cfv.CFCheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Painting In The Sun Light" android:textSize="30sp" app:font_name="@string/painting_in_the_sun_light" /> 

正如你知道如何在eclipse的android项目中使用自定义字体,我build议你看一下android studio项目的目录结构,并find资产文件夹的位置。

https://developer.android.com/tools/projects/index.html