définir la police à L'exécution, Textview
Comment définir la police sur textview, qui est créée à l'exécution?
J'ai créé textview
Textview tv = new TextView(this);
tv.setTextSize(20);
Comme je peux changer la taille
je veux définir le style de police sur "Verdana".
Comment faire?? égard shishir
7 réponses
Pour définir la police intégrée au moment de L'exécution:
Tout d'Abord, Pour Changer la Police face, un Police de caractères la classe est utilisée.
Maintenant,
at Run-Time
, pour définir le type de police, UtilisationsetTypeface(Typeface)
à partir du code Java-
at Design-Time
, pour définir le type de police, Utilisationandroid:typeface="serif"
Par exemple:
<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" />
Pour définir des polices personnalisées dans votre application Android
Pour ce faire, créez simplement un assets / dossier dans la racine du projet, et mettez vos polices (dans TrueType, ou TTF, form) dans les assets. Vous pouvez, par exemple, créer assets/fonts/
et mettez vos fichiers TTF là-dedans:
TextView tv=(TextView)findViewById(R.id.custom);
Typeface face=Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf");
tv.setTypeface(face);
Vous pouvez avoir .police ttf dans votre fichier actif. Dites que le nom de la police est "default".ttf " et vous devez maintenant écrire en dessous de 2 lignes de code
TextView text = new TextView(this);
text.setTypeface(Typeface.createFromAsset(getAssets(), "default.ttf"));
Vous devez également nous prudent parce que la police différente ont des tailles différentes. Vous devrez peut-être définir la taille comme:
text.setTextSize(20);
Voici une petite classe d'utilité
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);
}
}
Pour des choses comme Spinner
S ou ListView
s (c'est-à-dire tout type de AdapterView
) qui génèrent leurs enfants à partir d'un adaptateur, vous devrez définir la police de caractères de chaque élément View
dans la méthode getView
(ou similaire) de l'adaptateur. Cela est dû au fait que les vues peuvent être créées au besoin et que la définition de Typeface
dans onCreate
ne fonctionnera pas correctement.
Vous devez utiliser Caractères:
- ajoutez la police que vous souhaitez utiliser à votre projet en tant qu'actif.
-
Créer un objet de police en utilisant cette police:
Typeface myFont = Typeface.createFromAsset(getAssets(), "fonts/MyFont.ttf");
-
Définissez la police de caractères sur l'objet que vous souhaitez personnaliser:
TextView myTextView = (TextView)findViewById(R.id.my_text_view); myTextView.setTypeface(myFont);
Avec l'introduction de polices en XML dans Android 8.0 (rétrocompatible à partir de la version API 14) Il est très facile de définir la police à partir de xml lui-même.
De la documentation android:
Android 8.0 (API niveau 26) introduit une nouvelle fonctionnalité, polices en XML, ce qui vous permet d'utiliser des polices comme ressources. Vous pouvez ajouter le fichier de police dans le dossier res / font / pour regrouper les polices en tant que ressources. Ces polices sont compilé dans votre fichier R et sont automatiquement disponibles dans Android Studio. Vous pouvez accéder aux ressources de police à l'aide d'un nouveau type de ressource, la police. Par exemple, pour accéder à une ressource de police, utilisation @font / myfont, ou R. font.myfont.
Tout d'Abord créer un Android Répertoire des Ressources dans res
dossier nommé comme police
Ajouter votre .fichier de police ttf dans ce répertoire, puis créez une famille de polices
Créer une famille de polices
Une famille de polices est un ensemble de fichiers de polices ainsi que ses détails de style et de poids. Dans Android, vous pouvez créez une nouvelle famille de polices en tant que ressource XML et accédez-y en tant qu'unité unique, au lieu de référencer chaque style et chaque poids en tant que ressources distinctes. Ce faisant, le système peut sélectionner la police correcte en fonction du style de texte que vous essayez d'utiliser.
Pour créer une famille de polices, procédez comme suit dans Android Studio:
- cliquez avec le bouton droit sur le dossier de police et accédez à nouveau > fichier de ressources de police. Le Une nouvelle fenêtre de fichier de ressources apparaît.
- entrez le nom du fichier, et puis cliquez sur OK. La nouvelle ressource de police XML s'ouvre dans l'éditeur.
-
Enfermez chaque fichier de police, style et attribut de poids dans le
<font>
élément. Le XML suivant illustre l'ajout de polices attributs dans la ressource de police XML:<?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>
, Puis utiliser le code suivant pour définir la police dans votre textView
comme
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/lobster"/>
Dynamiquement, vous pouvez définir la fontfamily similaire à android: fontFamily en xml en utilisant ceci,
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));
Ce sont la liste des police par défaut famille utilisée, utilisez tout cela en remplaçant la chaîne de guillemets doubles "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 " est le fichier ttf. Chemin sera dans src/assets/fonts/mycustomfont.ttf
Vous pouvez utiliser le code suivant pour définir votre texte à une police spécifique au moment de l'exécution. Appelez simplement la méthode setViewGroupFont
à la fin de votre méthode Activity onCreate
ou chaque fois que vous créez dynamiquement de nouvelles vues:
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
}
}
}
}
}