我试图像在Eclipse中一样在Android Studio中使用自定义字体。但不幸的是,无法弄清楚“ assets”文件夹的存放位置!
我试图像在Eclipse中一样在Android Studio中使用自定义字体。但不幸的是,无法弄清楚“ assets”文件夹的存放位置!
Answers:
2020年更新:
在res文件夹中创建一个名为font的文件夹,然后复制您的字体
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/abc_font" />
用于程序设计:
textView.setTypeface(ResourcesCompat.getFont(context, R.font.abc_font))
选择文件>新建>文件夹>资产文件夹
点击完成
右键单击资产并创建一个名为fonts的文件夹
将字体文件放入资源 > 字体
使用下面的代码更改textView的字体
TextView textView = (TextView) findViewById(R.id.textView);
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf");
textView.setTypeface(typeface);
有很多方法可以在字段上设置自定义字体系列,而我使用的方法如下。
要将字体添加为资源,请在Android Studio中执行以下步骤:
1)右键单击res文件夹,然后转到“新建”>“ Android资源目录”。出现“新资源目录”窗口。
2)在资源类型列表中,选择字体,然后单击确定。
注意:资源目录的名称必须是字体。
在xml文件的所需视图中添加字体:
注意:但是您需要执行以下操作:
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"
}
buildtoolsVersion
高于26,最低targetSdkVersion
要求26
classpath 'com.android.tools.build:gradle:3.0.0-beta4'
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
我认为我们可以使用Google字体而不是下载.ttf文件。这很容易实现。只有您必须执行以下步骤。 步骤1)打开项目的layout.xml,并在属性中选择文本视图的选择字体系列(随附参考屏幕截图)
步骤2)如果字体不存在,请在字体家族中选择“更多字体..”选项。然后您将看到一个新窗口将打开,您可以在其中键入所需的字体并从该列表中选择所需的字体,例如,Regular,Bold,Italic等。如下图所示。
步骤3)然后,您将观察到/ res文件夹中将自动生成一个字体文件夹,其中包含您选择的字体xml文件。
然后,您可以直接在xml中使用此字体系列,如下所示:
android:fontFamily="@font/josefin_sans_bold"
或者在编程上,您可以通过使用
Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
fontText.setTypeface(typeface);
您好,在这里,我们有一种更好的方法可以在Android上的EditTexts和TextViews上一次应用字体,并将其应用到整个项目中。
首先,您需要制作字体文件夹。这是步骤。
1:转到(项目文件夹)然后app> src> main
2:在主文件夹中创建名为“ assets / fonts”的文件夹。
3:将字体放入字体文件夹。这里我有'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"
/>
我想为Android-O和Android Studio 2.4添加答案
在您的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 O中可用的新功能,可以使用XML中的字体资源作为新功能。
要将字体添加为资源,请在Android Studio中执行以下步骤:
1)右键单击res文件夹,然后转到新建> Android资源目录。出现“新资源目录”窗口。
2)在资源类型列表中,选择字体,然后单击确定。
注意:资源目录的名称必须是字体。
3)在字体文件夹中添加字体文件。
您可以在新资源类型font的帮助下访问字体资源。例如,要访问字体资源,请使用@ font / myfont或R.font.myfont。
例如。 Typeface typeface = getResources().getFont(R.font.myfont);
textView.setTypeface(typeface);
您可以使用简单的EasyFonts第三方库将各种自定义字体设置为TextView
。通过使用该库,您不必担心下载字体并将其添加到asset / fonts文件夹中。也关于字体对象的创建。您也将无需创建资产文件夹。
只是:
TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setTypeface(EasyFonts.robotoThin(this));
该库提供了许多类型的字体。
1在字体文件夹上添加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"
/>
要将字体分配给textView:
TextView textView = (TextView) findViewById(R.id.your_textView);
final Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/your_font_name");
your_font_name包括字体扩展名。
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
首先创建assets
文件夹,然后fonts
在其中创建文件夹。
然后,你可以设置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);
}
}
}
将您的字体添加到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")
}
}
您完成了!
PS从android O,您可以直接添加字体。
将字体放在资产文件夹中,然后应用fontfamily:''您的字体
对于新读者
您可以使用此库 Gloxey自定义字体视图
gradle依赖
dependencies{
compile 'io.gloxey.cfv:custom-font-views:1.0.2'
}
如何使用?
创建文件夹资产 -> 字体。将字体复制到fonts文件夹中。
使用属性app: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" />