AndroidのEditTextのフォントを変更する方法はありますか?すべてのtextViewに設定したフォントと一致させたい。
editText.setTypeface(Typeface.SERIF);
TextViewのように。
<TextView
...
Android:typeface="serif"
... />
編集:上記はXMLです
Solution1 ::これらのメソッドを呼び出すには、親ビューを引数として渡します。
private void overrideFonts(final Context context, final View v) {
try {
if (v instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) v;
for (int i = 0; i < vg.getChildCount(); i++) {
View child = vg.getChildAt(i);
overrideFonts(context, child);
}
} else if (v instanceof EditText) {
((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "font.ttf"));
}
} catch (Exception e) {
}
}
Solution2 :: TextViewクラスをカスタムフォントでサブクラス化し、textviewの代わりに使用できます。
public class MyEditView extends EditText{
public MyEditView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyEditView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyEditView(Context context) {
super(context);
init();
}
private void init() {
if (!isInEditMode()) {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font.ttf");
setTypeface(tf);
}
}
}
fontsフォルダーをassetsフォルダーに作成し、.ttfフォントファイルを配置してから、onCreate()関数に書き込みます。
EditText editText =(EditText)findViewById(R.id.insert_yors_edit_text_layout);
Typeface type = Typeface.createFromAsset(getAssets(),"fonts/yours_font.ttf");
editText.setTypeface(type);
font前回のバージョンのresディレクトリの下にフォルダーを作成することができますAndroid studio 3。それからコピーして、フォントをfontフォルダーに貼り付けます。fontFamily
をEditText tag xmlに追加します。
以下のように。
<EditText
Android:id="@+id/subject"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_below="@id/headerShare"
Android:layout_marginBottom="5dp"
Android:layout_marginEnd="16dp"
Android:layout_marginStart="16dp"
Android:layout_marginTop="16dp"
Android:background="@drawable/edittext_bg"
Android:fontFamily="@font/ritaric"
Android:gravity="start"
Android:hint="Subject"
Android:inputType="text"
Android:maxHeight="50dp"
Android:padding="16dp"
Android:textColor="@color/black"
Android:textColorHint="@color/black"
Android:textSize="@dimen/colors_textview_size" />
を使用しております Android:fontFamily="@font/ritaric"
EditTextにフォントを適用します。
void setFont(Context context, ViewGroup vg)
{
final String FONT_NAME = "lato_bold.ttf";
for (int i = 0; i < vg.getChildCount(); i++)
{
View v = vg.getChildAt(i);
if (v instanceof ViewGroup)
setFont(context, (ViewGroup) v);
else if (v instanceof TextView)
{
((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
}
else if (v instanceof EditText)
{
((EditText) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
}
else if (v instanceof Button)
{
((Button) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
}
else if (v instanceof CheckBox)
{
((CheckBox) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
}
else if (v instanceof RadioButton)
{
((RadioButton) v).setTypeface(Typeface.createFromAsset(context.getAssets(), FONT_NAME ));
}
}
}
ActivityまたはFragmentで、メインレイアウトを取得します
Inflater inflater = (Inflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//For Activity
//Inflater inflater = (Inflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.main_fragment, container, false);
//For Activity
//View v = inflater.inflate(R.layout.signup_fragment, null, false);
if (v instanceof ViewGroup)
{
setFont(getActivity(), (ViewGroup) v);
//For Activity
//setFont(this, (ViewGroup) v);
}
Javaクラスでこのコードを使用してください
EditText et_brand=(EditText)findViewById(R.id.et_brand);
et_brand.setTypeface(Typeface.createFromAsset(getAssets(),"Aspergit Bold.ttf"));
//Aspergit Bold.ttf is Font style name of text
新しいJavaクラスを作成し、必要に応じて
public class CustomTextView extends TextView {
public CustomTextView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CustomTextView(Context context) {
super(context);
init();
}
private void init() {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(),
"Aspergit Bold.ttf");
setTypeface(tf);
}
}
Xmlファイルで使用します
<YourPackageNAme.CustomEditText
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@null"/>
このコードをJavaファイルに追加します。通常、イタリック、太字、太字など、どのタイプを追加できますか。
edittext.set Typeface(null、Typeface.ITALIC);