2017-10-26 14 views
-3

私はAndroidアプリケーションにSamsungOneというカスタムのSamsungフォントを追加したいと思っています。私はあなたがオンラインのフォントをWebサイトに貼り付けることができると知っていますが、どのようにアプリケーションでこれをやっていますか? Javaは問題ありませんが、XMLはより良いでしょう。誰も助けることができますか?オンラインでカスタムフォントをアプリケーションのTextViewに追加するにはどうすればよいですか?

+0

書体を使用したくないですか? –

答えて

1

app ⟶ src ⟶ main ⟶ assetsでインターネットからダウンロードした.ttfを追加してください。 そして、あなたはtextviewsにそれを適用するには、このコードスニペットを使用することができ、編集テキストなど

TextView t = (TextView) findViewById(R.id.textView3); 
Typeface typeface = Typeface.createFromAsset(getAssets(), "century_gothic.ttf"); 
        // century_gothic.ttf is the name of your .ttf file stored in assets. 
t.setTypeface(typeface); 
0

あなただけのフォントの資産フォルダに、それを使用することをコピーすることができます。 Javaを使用:

typeface = Typeface.createFromAsset(context.getApplicationContext().getAssets(), 
         typefaceName); 

はあなたがタイプフェイスのすべてのタイプを定義し、書体を設定するために属性を使用することができますattrs.xmlカスタムビュー(あなたが好きなのTextViewまたはEDITTEXT).INを作成する必要があり、XMLから、それを使用するには。下の[編集]テキストのカスタム実装を参照してください: -

public class CustomTextView extends TextView { 

public CustomTextView(Context context) { 
    super(context); 
} 
public CustomTextView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    handleStyleable(context, attrs); 
} 
public CustomTextView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 

    handleStyleable(context, attrs); 
} 

private void handleStyleable(Context context, AttributeSet attrs) { 
    TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CustomFont); 
    FONT_VAL font_val= FONT_VAL.NONE; 
    try { 
     for (FONT_VAL mode : FONT_VAL.values()) { 
      if (ta.getInt(R.styleable.CustomFont_typeface, 3) == mode.getId()) { 
       font_val = mode; 
       break; 
      } 
     } 
     if (font_val == FONT_VAL.MEDIUM_FONT) { 
      setTypeface(AppUtil.getTypeface(context, Constants.FontName.MEDIUM)); 
     }else if(font_val== FONT_VAL.REGULAR_FONT){ 
      setTypeface(AppUtil.getTypeface(context, Constants.FontName.REGULAR)); 
     }else if(font_val== FONT_VAL.LIGHT_FONT){ 
      setTypeface(AppUtil.getTypeface(context, Constants.FontName.LIGHT)); 
     }else if(font_val== FONT_VAL.ITALIC){ 
      setTypeface(AppUtil.getTypeface(context, Constants.FontName.ITALIC)); 
     }else if(font_val== FONT_VAL.BOLD){ 
      setTypeface(AppUtil.getTypeface(context, Constants.FontName.BOLD)); 
     } 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

public enum FONT_VAL { 
NONE(0),MEDIUM_FONT(1), REGULAR_FONT(2),LIGHT_FONT(3), ITALIC(4),BOLD(5); 
private final int ID; 
FONT_VAL(final int id) { 
    this.ID = id; 
} 
public int getId() { 
    return ID; 
} 

がattrs.xml内の各フォントのカスタム属性を定義します - :

<com.views.CustomTextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textColor="@color/white" 
     app:typeface="bold" /> 
その後

<declare-styleable name="CustomFont"> 
    <attr name="typeface" format="enum"> 
     <enum name="medium_font" value="1" /> 
     <enum name="regular_font" value="2" /> 
     <enum name="light_font" value="3" /> 
     <enum name="italic" value="4" /> 
     <enum name="bold" value="5" /> 
    </attr> 
</declare-styleable> 

は、あなたが直接XMLでそれを使用することができます

フォントを外部ストレージから設定するには、実行時に行う必要があります。

Typeface typeface = Typeface.createFromFile(
new File(Environment.getExternalStorageDirectory(), "font.ttf")); 
関連する問題