如何在Android Studio中使用自定义字体
我试图在Android Studio中使用自定义字体,就像我们在Eclipse中所做的一样。 但不幸的是无法弄清楚“资产”文件夹的位置!
以下是解决这个问题的几个步骤:
- 转到(项目文件夹)
- 然后, app> src> main
- 创build文件夹'资产>字体'到主文件夹。
-
把你的'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);
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。
-
在您的活动中扩展AppCompatActivity。
-
像这样更新你的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
-
在build.gradle文件中添加依赖关系。
classpath'com.android.tools.build:gradle:3.0.0-beta4'
-
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。
- 在项目 – >应用程序(或您的应用程序名称) – > src – >主 – >右键单击 – >新build – >目录中创build文件夹资产。
- 然后在名为“字体”的资产内创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添加我的答案
-
在res文件夹下创build名为font的文件夹。 下载你想要添加到你的项目示例谷歌字体的各种字体
-
在你的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
文件夹。
那么你可以设置font
从assets
或directory
如下:
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资产文件夹的位置。