2011-11-16 98 views
1

我在String.xml文件中使用下面的代码。现在我的问题是在这里,我使用了字体作为Aerial.So有什么方法可以使用我的自定义字体在这里使用天线。假设我的自定义字体是aa.ttf ...所以我怎么能在这里使用。 我的代码是如何在String.xml文件中使用自定义字体

<string name="strt_dialog_desc">To start monitoring press and hold the date on which the latest cycle started.<![CDATA[<font face=Aerial>]]>Click OptionMenu for help!<![CDATA[</font>]]></string> 

回答

3

//将您的字体资产文件夹

TextView tv=(TextView)findViewById(R.id.custom); 
Typeface face=Typeface.createFromAsset(getAssets(),"fonts/aerial.ttf"); 

tv.setTypeface(face); 
tv.setText(R.string.strt_dialog_desc); 
+0

我知道的事情,但我的问题是如何做到这一点的string.xml文件 – AndroidDev

+0

这是不可能的。在textviews上设置字体 – Kuffs

-1

您可以通过下面的属性设置字体

android:typeFace= 
+0

如何在我的上面的代码中使用这个 – AndroidDev

+0

您只需检查我的代码。因此,在我的代码中,我想将自定义字体替换为空中的 – AndroidDev

2

//使用动态SpannableString更改字体

Typeface tfaerial=Typeface.createFromAsset(getAssets(),"fonts/aerial.ttf"); 
Typeface tfTradeGothicLight=Typeface.createFromAsset(getAssets(), "fonts/TradeGothic-Light.OTF"); 

String strt_dialog_desc=this.getResources().getString(R.string.strt_dialog_desc); 

int upto=strt_dialog_desc.indexOf("."); 

     if (strt_dialog_desc!=null) 
     { 
      aboutAuthTV.setTextColor(Color.BLACK); 
      aboutAuthTV.setLineSpacing(1.2f, 1.5f); 
      aboutAuthTV.setTextSize(23); 

      SpannableString SS = new SpannableString(strt_dialog_desc); 
      SS. setSpan (new StyleSpan(tfTradeGothicLight.getStyle()), 0, upto,Spanned.SPAN_EXCLUSIVE_INCLUSIVE); 
      SS. setSpan (new StyleSpan(tfaerial.getStyle()), upto, strt_dialog_desc.length(),Spanned.SPAN_EXCLUSIVE_INCLUSIVE); 
      yourtextView.setText(SS); 
     } 

//这个以这种方式改变字体改变颜色notworking

String str="<font size =\"20\"><B>Bold</B> <br/> Then Normal Text<br/> 
         <i>Then Italic</i> </font>" + 
         "<br/> <font color=\"green\" >this is simple sentence </font>" + 
         "<br/> <font face=\"verdana\" >this is simple sentence </font>"+ 
         "<br/><br/><br/><br/><a>this is simple sentence</a>"; 
     Spanned strHtml= Html.fromHtml(str); 

     TextView tv = (TextView)findViewById(R.id.textView); 
     tv.setText(strHtml); 
2

我认为你可以使用这个code这将在运行时更改字体这样做。

MyApp.java

public class MyApp extends Application { 

    @Override 
    public void onCreate() { 
    TypefaceUtil.overrideFont(getApplicationContext(), "SERIF", "fonts/Roboto-Regular.ttf"); // font from assets: "assets/fonts/Roboto-Regular.ttf 
    } 
} 

TypefaceUtil.java

import android.content.Context; 
import android.graphics.Typeface; 
import android.util.Log; 

import java.lang.reflect.Field; 

public class TypefaceUtil { 

    /** 
    * Using reflection to override default typeface 
    * NOTICE: DO NOT FORGET TO SET TYPEFACE FOR APP THEME AS DEFAULT TYPEFACE WHICH WILL BE OVERRIDDEN 
    * @param context to work with assets 
    * @param defaultFontNameToOverride for example "monospace" 
    * @param customFontFileNameInAssets file name of the font from assets 
    */ 
    public static void overrideFont(Context context, String defaultFontNameToOverride, String customFontFileNameInAssets) { 
     try { 
      final Typeface customFontTypeface = Typeface.createFromAsset(context.getAssets(), customFontFileNameInAssets); 

      final Field defaultFontTypefaceField = Typeface.class.getDeclaredField(defaultFontNameToOverride); 
      defaultFontTypefaceField.setAccessible(true); 
      defaultFontTypefaceField.set(null, customFontTypeface); 
     } catch (Exception e) { 
      Log.e("Can not set custom font " + customFontFileNameInAssets + " instead of " + defaultFontNameToOverride); 
     } 
    } 
} 

的themes.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light"> 
    <!-- you should set typeface which you want to override with TypefaceUtil --> 
    <item name="android:typeface">serif</item> 
    </style> 
</resources> 
+0

这对我有效,但它只会改变“TextView不是'字符串的名字 –

相关问题