шрифты
Добавлено: 12 дек 2013, 19:07
Как добавить шрифт в свое предложение?
Если нельзя добавить шрифт, то можно ли Рисовать их программно?
Если нельзя добавить шрифт, то можно ли Рисовать их программно?
Это больше, чем вы спрашивалипарень писал(а):Как добавить шрифт в свое предложение?
Если нельзя добавить шрифт, то можно ли Рисовать их программно?
видимо ты мою статью так и не понялпарень писал(а):Можно ли поумолчанию сделать шрифт, типа в стиле или в теме?
Можно http://stackoverflow.com/questions/1228 ... -whole-app Но, я так полагаю, ты не очень владеешь android-ом, правильно? Решение, которое предложили тебе выше шикарно. Так что если могёшь и то, и то соединить воедино - дерзай. Если нет, то лучше используй статью и устанавливай программно. Результат будет тот же.парень писал(а):Можно ли по умолчанию сделать шрифт, типа в стиле или в теме?
я лишь понял что если написать:rezak90 писал(а):видимо ты мою статью так и не понялпарень писал(а):Можно ли поумолчанию сделать шрифт, типа в стиле или в теме?
Код: Выделить всё
tvContent.setTypeface(Typefaces.get(getActivity(), FontType.ITALIC));есть, но опять таки ты не понял статью, если сделать как ты то будет утечка памятипарень писал(а):а я спрашиваю есть ли способы чтобы в xml у эллемента я пишу например: font-famili:Roboto-italic и тогда это будет такой то шрифт???
печалькапарень писал(а):я лишь понял что если написать:rezak90 писал(а):видимо ты мою статью так и не понялпарень писал(а):Можно ли поумолчанию сделать шрифт, типа в стиле или в теме?то тогда шрифт именно этого эллемента будет fonts/Roboto-Italic.ttfКод: Выделить всё
tvContent.setTypeface(Typefaces.get(getActivity(), FontType.ITALIC));
а я спрашиваю есть ли способы чтобы в xml у эллемента я пишу например: font-famili:Roboto-italic и тогда это будет такой то шрифт???
Код: Выделить всё
public class Typefaces
{
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(Context context, FontType type)
{
synchronized (cache)
{
if (!cache.containsKey(type.name()))
{
Typeface tf = null;
switch (type)
{
case BLACK:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Black.ttf");
break;
case BLACK_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BlackItalic.ttf");
break;
case BOLD:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Bold.ttf");
break;
case BOLD_CONDENSED:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BoldCondensed.ttf");
break;
case BOLD_CONDENSED_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BoldCondensedItalic.ttf");
break;
case BOLD_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BoldItalic.ttf");
break;
case CONDENSED:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Condensed.ttf");
break;
case CONDENSED_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-CondensedItalic.ttf");
break;
case ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Italic.ttf");
break;
case LIGHT:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf");
break;
case LIGHT_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-LightItalic.ttf");
break;
case MEDIUM:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Medium.ttf");
break;
case MEDIUM_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-MediumItalic.ttf");
break;
case REGULAR:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Regular.ttf");
break;
case THIN:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Thin.ttf");
break;
case THIN_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-ThinItalic.ttf");
break;
default:
break;
}
cache.put(type.name(), tf);
}
return cache.get(type.name());
}
}
public enum FontType
{
BLACK, BLACK_ITALIC, BOLD, BOLD_CONDENSED, BOLD_CONDENSED_ITALIC, BOLD_ITALIC, CONDENSED, CONDENSED_ITALIC, ITALIC, LIGHT, LIGHT_ITALIC, MEDIUM, MEDIUM_ITALIC, REGULAR, THIN, THIN_ITALIC;
}
}Код: Выделить всё
public class MyTextView extends android.widget.TextView
{
public MyTextView(Context context)
{
this(context, null);
}
public MyTextView(Context context, AttributeSet attrs)
{
this(context, attrs, 0);
}
public MyTextView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs);
if (this.isInEditMode()) return ;
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SomeStyle);
final String customFont = a.getString(R.styleable.SomeStyle_font);
// this.setTypeface(Typeface.createFromAsset(context.getAssets(), customFont)
// Так должно браться из кеша. Верно?
this.setTypeface(Typefaces.get(context, FontType.ITALIC));
);
}
}Код: Выделить всё
<declare-styleable name="SomeStyle">
<attr name="font" format="string" />
</declare-styleable>Код: Выделить всё
<item name="android:textViewStyle">@style/MyTextView</item>Код: Выделить всё
<style name="MyTextView1" parent="@android:style/Widget.TextView">
<item name="font">МОЙШРИФТ1.ttf</item>
</style><style name="MyTextView2" parent="@android:style/Widget.TextView">
<item name="font">МОЙШРИФТ2.ttf</item>
</style>Код: Выделить всё
<com.example.buhg.RobotoTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="qwe 123 бублик"
android:textSize="25sp"
app:font="LIGHT" />Код: Выделить всё
import java.util.Hashtable;
import android.content.Context;
import android.graphics.Typeface;
public class Typefaces
{
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(Context context, FontType type)
{
synchronized (cache)
{
if (!cache.containsKey(type.name()))
{
Typeface tf = null;
switch (type)
{
case BLACK:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Black.ttf");
break;
case BLACK_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BlackItalic.ttf");
break;
case BOLD:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Bold.ttf");
break;
case BOLD_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BoldItalic.ttf");
break;
case ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Italic.ttf");
break;
case LIGHT:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf");
break;
case LIGHT_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-LightItalic.ttf");
break;
case MEDIUM:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Medium.ttf");
break;
case MEDIUM_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-MediumItalic.ttf");
break;
case REGULAR:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Regular.ttf");
break;
case THIN:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Thin.ttf");
break;
case THIN_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-ThinItalic.ttf");
break;
case CONDENSED_BOLD:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Bold.ttf");
break;
case CONDENSED_BOLD_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-BoldItalic.ttf");
break;
case CONDENSED_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Italic.ttf");
break;
case CONDENSED_LIGHT:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Light.ttf");
break;
case CONDENSED_LIGHT_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-LightItalic.ttf");
break;
case CONDENSED_REGULAR:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Regular.ttf");
break;
default:
break;
}
cache.put(type.name(), tf);
}
return cache.get(type.name());
}
}
public enum FontType
{
BLACK, BLACK_ITALIC, BOLD, BOLD_ITALIC, ITALIC, LIGHT, LIGHT_ITALIC, MEDIUM, MEDIUM_ITALIC, REGULAR, THIN, THIN_ITALIC, CONDENSED_BOLD, CONDENSED_BOLD_ITALIC, CONDENSED_ITALIC, CONDENSED_LIGHT, CONDENSED_LIGHT_ITALIC, CONDENSED_REGULAR;
}
}Код: Выделить всё
import com.example.buhg.Typefaces.FontType;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.TextView;
public class RobotoTextView extends TextView {
public RobotoTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (!isInEditMode()) {
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SomeStyle);
final String customFont = a.getString(R.styleable.SomeStyle_font);
FontType typeA=FontType.THIN;
typeA=FontType.valueOf(customFont);
setTypeface(Typefaces.get(context, typeA));
}
}
public RobotoTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public RobotoTextView(Context context) {
this(context, null);
}
}Код: Выделить всё
public enum FontType
{
BLACK, BLACK_ITALIC, BOLD, BOLD_ITALIC, ITALIC, LIGHT, LIGHT_ITALIC, MEDIUM, MEDIUM_ITALIC, REGULAR, THIN, THIN_ITALIC, CONDENSED_BOLD, CONDENSED_BOLD_ITALIC, CONDENSED_ITALIC, CONDENSED_LIGHT, CONDENSED_LIGHT_ITALIC, CONDENSED_REGULAR;
}Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="SomeStyle">
<attr name="font" format="string" />
</declare-styleable>
</resources>