在运行时设置字体,Textview

如何将字体设置为运行时创build的textview

我创build了textview

Textview tv = new TextView(this); tv.setTextSize(20); 

像我可以改变大小
我想将字体样式设置为“Verdana”。

这个怎么做?? 认为shishir

Solutions Collecting From Web of "在运行时设置字体,Textview"

在运行时设置内置字体:

  • 首先,要更改字体,使用了一个字体类。

  • 现在, at Run-Time ,设置字体,从Java代码中使用setTypeface(Typeface)

  • at Design-Time ,设置font-face,使用android:typeface="serif"

例如:

 <TextView android:text="@+id/TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30px" android:textStyle="italic" android:typeface="serif" /> 

在您的Android应用程序中设置自定义字体

为此,只需在项目根目录下创build资产/文件夹,然后将字体(以TrueType或TTF格式)放入资产中。 例如,你可能会创buildassets/fonts/并把你的TTF文件放在那里:

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

您可以在资产文件夹中使用.ttf字体。 说字体的名字是“default.ttf”,你现在只需写下2行代码

 TextView text = new TextView(this); text.setTypeface(Typeface.createFromAsset(getAssets(), "default.ttf")); 

你还必须小心,因为不同的字体有不同的大小。 您可能需要将尺寸设置为:

 text.setTextSize(20); 

这是一个小实用程序类

 public class TypefaceHelper { public static void setViewGroupTypeface(ViewGroup container, Typeface typeface) { final int children = container.getChildCount(); for (int i = 0; i < children; i++) View child = container.getChildAt(i); if (child instanceof TextView) { setTextViewTypeface((TextView) child, typeface); } else if (child instanceof ViewGroup) { setViewGroupTypeface((ViewGroup) child, typeface); } } } public static void setTextViewTypeface(TextView textView, Typeface typeface) { textView.setTypeface(typeface); } } 

对于像SpinnerListView (即任何types的AdapterView )从适配器生成其子代的东西,您将需要在适配器的getView (或类似的)方法中设置每个项目的字体。 这是因为可能会根据需要创build视图,因此在onCreate设置Typeface将无法正常工作。

你需要使用字体 :

  1. 将您希望使用的字体添加到您的项目中作为资产。
  2. 使用该字体创build字体对象:

    Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/MyFont.ttf");

  3. 将字体设置为您要自定义的对象:

    TextView myTextView = (TextView)findViewById(R.id.my_text_view); myTextView.setTypeface(myFont);

dynamic的,你可以使用这个在xml中设置类似于android:fontFamily的fontfamily,

 For Custom font: TextView tv = ((TextView) v.findViewById(R.id.select_item_title)); Typeface face=Typeface.createFromAsset(getAssets(),"fonts/mycustomfont.ttf"); tv.setTypeface(face); For Default font: tv.setTypeface(Typeface.create("sans-serif-medium",Typeface.NORMAL)); 

这些是所使用的默认字体系列的列表,使用任何这个replace双引号string“sans-serif-medium”

 FONT FAMILY TTF FILE 1 casual ComingSoon.ttf 2 cursive DancingScript-Regular.ttf 3 monospace DroidSansMono.ttf 4 sans-serif Roboto-Regular.ttf 5 sans-serif-black Roboto-Black.ttf 6 sans-serif-condensed RobotoCondensed-Regular.ttf 7 sans-serif-condensed-light RobotoCondensed-Light.ttf 8 sans-serif-light Roboto-Light.ttf 9 sans-serif-medium Roboto-Medium.ttf 10 sans-serif-smallcaps CarroisGothicSC-Regular.ttf 11 sans-serif-thin Roboto-Thin.ttf 12 serif NotoSerif-Regular.ttf 13 serif-monospace CutiveMono.ttf 

“mycustomfont.ttf”是ttf文件。 path将在src / assets / fonts / mycustomfont.ttf中

您可以使用以下代码在运行时将所有文本设置为特定的字体。 只需在Activity的onCreate方法结束时调用setViewGroupFont方法,或者每当dynamic创build新视图时:

 private static final String FONT_NAME = "fonts/Roboto-Regular.ttf"; private static Typeface m_font = null; public static Typeface getFont(Context p_context) { if (null == m_font && null != p_context) { m_font = Typeface.createFromAsset(p_context.getApplicationContext().getAssets(), FONT_NAME); } return m_font; } public static void setViewGroupFont(ViewGroup p_viewGroup) { if (null != p_viewGroup) { for (int currChildIndex = 0; currChildIndex < p_viewGroup.getChildCount(); currChildIndex++) { View currChildView = p_viewGroup.getChildAt(currChildIndex); if (ViewGroup.class.isInstance(currChildView)) { setViewGroupFont((ViewGroup) currChildView); } else { try { Method setTypefaceMethod = currChildView.getClass().getMethod("setTypeface", Typeface.class); setTypefaceMethod.invoke(currChildView, getFont(p_viewGroup.getContext())); } catch (NoSuchMethodException ex) { // Do nothing } catch (Exception ex) { // Unexpected error setting font } } } } }