Подтвердить что ты не робот

Установить шрифт во время выполнения, Textview

Как установить шрифт в textview, который создается во время выполнения?

i создал textview

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

как я могу изменить размер
Я хочу установить стиль шрифта в "Вердану".

Как это сделать? С уважением Шишир

4b9b3361

Ответ 1

Чтобы установить встроенный шрифт во время выполнения:

  • Прежде всего, для изменения шрифта, используется Typeface.

  • Теперь, at Run-Time, чтобы установить шрифт, используйте setTypeface(Typeface) из кода Java

  • at Design-Time, чтобы установить шрифт, используйте 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

Для этого просто создайте активы/папку в корне проекта и поместите в свои объекты шрифты (в форме TrueType или TTF). Например, вы можете создать assets/fonts/ и разместить там TTF файлы:

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

Ответ 2

У вас может быть шрифт .ttf в папке вашего ресурса. Скажем, имя шрифта "default.ttf", и теперь вам нужно написать ниже 2 строки кода

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

Вы также должны быть осторожны, потому что разные шрифты имеют разные размеры. Вам может потребоваться установить размер как:

text.setTextSize(20);

Ответ 3

Вам нужно использовать Typeface:

  • добавить шрифт, который вы хотите использовать в своем проекте в качестве актива.
  • создать объект Typeface с помощью этого шрифта:

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

  • установите тип шрифта для объекта, который вы хотите настроить:

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

Ответ 4

Вот небольшой класс утилиты

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);
    }

}

Для таких вещей, как Spinner или ListView (т.е. любой тип AdapterView), которые генерируют своих детей из адаптера, вам нужно будет установить шрифт каждого элемента View в getView (или аналогичном ) метод адаптера. Это связано с тем, что представления могут быть созданы по мере необходимости, поэтому установка Typeface в onCreate не будет работать должным образом.

Ответ 5

Динамически вы можете установить fontfamily, похожий на android: fontFamily в xml, используя это,

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));

Ниже приведен список семейства шрифта по умолчанию, используйте любое из этого, заменив строку с двойными кавычками "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. Путь будет находиться в src/assets/fonts/mycustomfont.ttf

Ответ 6

Вы можете использовать следующий код для установки всего текста на определенный шрифт во время выполнения. Просто вызовите метод setViewGroupFont в конце вашего действия onCreate или всякий раз, когда вы динамически создаете новые представления:

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
                }
            }
        }
    }
}