如何在Android Studio编写的项目中使用自定义字体

时间:2014-12-21 11:34:12

标签: android android-studio

我试图像在Eclipse中一样在Android Studio中使用自定义字体。但遗憾的是无法找出放置'assets'文件夹的位置!

19 个答案:

答案 0 :(得分:280)

以下是解决问题的步骤:

  1. 转到(项目文件夹)
  2. 然后 app> src> main
  3. 文件夹中创建文件夹'assets> fonts'
  4. 将.ttf文件放入fonts文件夹。

        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);
    

答案 1 :(得分:88)

https://i.stack.imgur.com/i6XNU.png

  1. 选择文件>新建>文件夹>资产文件夹

  2. 点击完成

  3. 右键点击资源,然后创建名为字体

  4. 的文件夹
  5. 将您的字体文件放入资源 > 字体

  6. 使用以下代码更改textView' s字体

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

答案 2 :(得分:35)

有许多方法可以在字段上设置自定义字体系列,我使用如下所示。

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

1)右键单击res文件夹,然后转到New> Android资源目录。将出现“新资源目录”窗口。

2)在“资源类型”列表中,选择“字体”,然后单击“确定”。

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

3)在字体文件夹中添加字体文件。 enter image description here

在xml文件中的所需视图中添加字体:

enter image description here

注意:但您需要遵循以下事项:

  1. Android Studio上面的3.0金丝雀。

  2. 您的活动扩展了AppCompatActivity。

  3. 更新您的gradle文件:

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

    • buildtoolsVersion高于26,最小targetSdkVersion需要26
  4. 在build.gradle文件中添加依赖项:

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

  5. gradle-wrapper.properties:

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

答案 3 :(得分:26)

我认为我们可以使用Google字体而不是下载.ttf文件。它很容易实现。只有你必须遵循这些步骤。 步骤1)打开项目的layout.xml和属性中文本视图的选择字体系列(附带参考屏幕截图)     enter image description here

步骤2)如果您的字体不存在,则在字体系列中选择更多字体..选项。然后你会看到一个新窗口会打开,在那里你可以输入你需要的字体&从该列表中选择所需的字体,即常规,粗体,斜体等。如下图所示。 enter image description here

步骤3)然后您将观察到将在/ res文件夹中自动生成一个字体文件夹,其中包含您选择的字体xml文件。

enter image description here

然后你可以直接在xml中使用这个字体系列作为

      android:fontFamily="@font/josefin_sans_bold"

或以编程方式,您可以使用

实现此目的
  Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
  fontText.setTypeface(typeface);

答案 4 :(得分:21)

您好,我们有更好的方法可以立即在Android上的EditTexts和TextViews上应用字体,并将其应用于整个项目。

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

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

2:创建名为' assets / fonts'的文件夹。进入主文件夹。

3:将字体放入fonts文件夹。在这里,我有MavenPro-Regular.ttf'

以下是在EditText上应用自定义字体的步骤,使用此方法可以在每个输入上应用字体。

1:创建一个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"
    />

答案 5 :(得分:8)

使用Support Library 26.0(和Android O),可以轻松地从资源加载字体 enter image description here

Typeface typeface= ResourcesCompat.getFont(Context context, int fontResourceId)

可以找到更多信息here.

答案 6 :(得分:7)

你可以使用easy&amp;简单的EasyFonts第三方库,可为您的TextView设置各种自定义字体。通过使用此库,您不必担心下载和添加字体到assets / fonts文件夹。还有关于字体对象的创建。您也可以免费创建资产文件夹。

简单地:

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

此库提供了许多类型的字体。

答案 7 :(得分:7)

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

  1. res 文件夹下创建名为 font 的文件夹。下载要添加到项目示例中的各种字体示例Google fonts

  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. 3.如果您希望以编程方式使用以下代码

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

    有关详情,请点击我的博文Font styles for Android with Android Studio 2.4

    的链接

答案 8 :(得分:4)

根据Android O中提供的新功能,font resources in XML可用作新功能。

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

1)右键单击 res 文件夹,然后转到新建&gt; Android资源目录。将出现“新资源目录”窗口。

2)在“资源类型”列表中,选择 font ,然后单击“确定”。

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

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

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

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

答案 9 :(得分:3)

  1. 在Project中创建文件夹资源 - &gt;应用程序(或您的应用程序名称) - &gt; src - &gt;主要 - &gt;右键单击 - &gt;新 - &gt;目录。
  2. 然后在资产内创建一个名为&#34; fonts&#34;。
  3. 的新目录

    将字体分配给textView:

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

    your_font_name包含字体扩展名。

答案 10 :(得分:2)

如果你像我一样对Android很陌生,这可能有点棘手。请务必致电:

allSatisfyWith()

方法,例如noneSatisfyWith()

答案 11 :(得分:1)

要在运行 Android 4.1(API 级别 16)及更高版本的设备上使用 XML 中的字体功能,请使用支持库 26。有关使用支持库的更多信息,请参阅使用支持库部分。

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

  1. 右键单击 res 文件夹并转到“新建”>“Android 资源目录”。

    出现新资源目录窗口。

  2. 在资源类型列表中,选择字体,然后单击确定。

  3. 在字体文件夹中添加您的字体文件。

创建字体系列 要创建字体系列,请在 Android Studio 中执行以下步骤:

  1. 右键单击字体文件夹,然后转到新建 > 字体资源文件。出现“新建资源文件”窗口。

  2. 输入文件名,然后单击确定。新字体资源 XML 在编辑器中打开。

  3. 将元素中的每个字体文件、样式和粗细属性括起来。以下 XML 说明在字体资源 XML 中添加与字体相关的属性: 如果您的 minSdkVersion 是 API 级别 26 或更高

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/lobster_regular" />
    <font
        android:fontStyle="italic"
        android:fontWeight="400"
        android:font="@font/lobster_italic" />
</font-family>

如果您的 minSdkVersion 低于 API 级别 26

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
    <font
        app:font="@font/lobster_italic"
        app:fontStyle="normal"
        app:fontWeight="400" />
</font-family>

然后你可以在任何地方使用它

android:fontFamily="@font/your_custom_font_file"

答案 12 :(得分:1)

将字体放入资产文件夹 然后应用fontfamily:''您的字体

答案 13 :(得分:1)

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

1)字体可以用作资源。

2)可下载的字体。

如果您想在Android应用程序中使用外部字体,您可以在apk中包含字体文件或配置可下载字体。

在APK中加入字体文件:您可以下载字体文件,将它们保存在res / font filer中,定义字体系列并在样式中使用字体系列。

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

配置可下载字体:通过提供字体提供程序详细信息来定义字体,添加字体提供程序证书并在样式中使用字体。

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

答案 14 :(得分:0)

首先将font.ttf文件添加到字体文件夹中。然后在onCreate方法中添加此行

    Typeface typeface = ResourcesCompat.getFont(getApplicationContext(), R.font.myfont);
    mytextView.setTypeface(typeface);

这是我的xml

            <TextView
            android:id="@+id/idtext1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="7dp"
            android:gravity="center"
            android:text="My Text"
            android:textColor="#000"
            android:textSize="10sp"
        />

答案 15 :(得分:0)

现在有很多种应用字体的方法,最简单的方法之一就是这样, 1)右键单击res文件夹    转到新建> Android资源目录。

2)从“资源类型”列表中,选择字体,然后单击“确定”。

3)将字体文件放在字体文件夹中。

答案 16 :(得分:0)

将字体添加到app / src / main / assets中的Assets文件夹中 制作这样的自定义textview:

class CustomLightTextView : TextView {

constructor(context: Context) : super(context){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet):    super(context, attrs){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet?,    defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
    attachFont(context)
}
fun attachFont(context: Context) {
    this.setTypeface(FontCache.getInstance().getLightFont(context))
}

}

添加FontCache:这样您就不必像这样反复创建字体:

class FontCache private constructor(){

val fontMap = HashMap<String,Typeface>()

companion object {
    private var mInstance : FontCache?=null
    fun getInstance():FontCache = mInstance?: synchronized(this){
        return mInstance?:FontCache().also { mInstance=it }
    }
}

fun getLightFont(context: Context):Typeface?{
    if(!fontMap.containsKey("light")){
        Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf");
        fontMap.put("light",Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf"))
    }
    return fontMap.get("light")
}

}

您完成了!

P.S。在android O中,您可以直接添加字体。

答案 17 :(得分:0)

我无法加载字体,因为我已将字体文件命名为Poppins-Medium.tff,将其重命名为poppins_medium.tff对我有用。 其余步骤保持不变:

  • 在res文件夹下创建字体资源目录
  • 将您的tff文件复制并粘贴到该目录中
  • 然后使用fontFamily属性在XML的TextView中使用。
  • 如果上述步骤无效,则可以使用此link
  • 创建该字体的FontFamily

答案 18 :(得分:0)

适合新读者

您可以使用此库 https://spark.apache.org/docs/latest/streaming-kafka-integration.html

gradle依赖

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

如何使用?

创建文件夹资产 - &gt;的字体即可。将字体复制到 fonts 文件夹中。

使用属性 app:font_name =&#34; font_name_string&#34; 在视图上应用字体。

示例

   <!--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" />