有没有办法在Android中更改EditText的字体?我希望它匹配我为所有textViews设置的字体。
答案 0 :(得分:37)
editText.setTypeface(Typeface.SERIF);
与TextView一样。
<TextView
...
android:typeface="serif"
... />
编辑:上面是XML
答案 1 :(得分:26)
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);
}
}
}
答案 2 :(得分:8)
在 assets 文件夹中创建一个 fonts 文件夹并将你的.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);
答案 3 :(得分:1)
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 ));
}
}
}
在您的活动或片段中,获取主要布局
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);
}
答案 4 :(得分:1)
您可以在最新版Android Studio 3的res目录下创建 font 文件夹。然后将其字体复制并转到 font 文件夹。现在只需将fontFamily
添加到 EditText 标记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上应用字体。
答案 5 :(得分:0)
在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"/>
答案 6 :(得分:0)
在您的java文件中添加此代码 你想要哪种类型可以添加如NORMAL,ITALIC,BOLD,BOLD_ITALIC。
edittext.setTypeface(null,Typeface.ITALIC);
答案 7 :(得分:0)
晚一点,但是, 简单的方法
mEditTextMobileNumber.setTextSize(16.0f);
如果您想在输入时更改字体:
// Change text size when started entering number
mEditTextMobileNumber.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s == null || String.valueOf(s).equalsIgnoreCase("")) {
mEditTextMobileNumber.setTextSize(12.0f);
} else {
mEditTextMobileNumber.setTextSize(20.0f);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
答案 8 :(得分:0)
您在main.class类中添加代码
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et = (EditText) findViewById(R.id.et);
EditText et2 = (EditText) findViewById(R.id.et2);
EditText et3 = (EditText) findViewById(R.id.et3);
et3.setTypeface(Typeface.MONOSPACE);
et3.setText("Monospace font");
}
}
在此处查看代码:change font in edittext android