如何在 Android 中不使用 XML 的情况下以编程方式动态应用 FontSize? [复制]

Posted

技术标签:

【中文标题】如何在 Android 中不使用 XML 的情况下以编程方式动态应用 FontSize? [复制]【英文标题】:How to apply FontSize dynamically and programmatically without using XML in Android? [duplicate] 【发布时间】:2012-09-24 05:50:54 【问题描述】:

可能重复:How to change the Font Size in a whole Application programmatically, android?

这是我的代码:我创建了带有 FontSize 选项列表的 Spinner。如果我单击 FontSize“26”,那么它应该能够更改特定的 FontSize。下面我有一个编辑框。因此,如果我单击字体大小为 40 并且使用比通常粗体的斜体样式。所以我应该能够使用这个选定的“字体”在 EditBox 内输入:FontSize“40”和斜体样式。

如何在 Android 中以编程方式执行此操作?

font=new Spinner(con);
option= new String[] "Select Font Size","8","10","12","14","16","18","20",
                      "22","24","26","28","30","32","34","36","38","40","50";
ArrayAdapter<String> adapter= new ArrayAdapter<String>(con,android.R.layout.simple_spinner_dropdown_item,option);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

font.setOnItemSelectedListener(new OnItemSelectedListener() 
    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long id) 
        option[1]="8";
       selectedItem= option[position];
    
    @Override
    public void onNothingSelected(AdapterView<?> arg0) 
    
);

【问题讨论】:

不要费心阅读FAQ's eh?? 实际上,我想在全球范围内进行。它应该适用于整个应用程序。不是专门针对 EditText 单独的。甚至它应该能够在我的整个项目中应用它。但是完全不明白怎么办.. 【参考方案1】:

改变

textSize 使用editText.setTextSize(20)

字体和样式使用editText.setTypeface(yourTypeFace, Typeface.BOLD)

更新

public class MyEditText extends EditText

public MyEditText(Context context) 
    super(context);
    init();


public MyEditText(Context context, AttributeSet attrs, int defStyle) 
    super(context, attrs, defStyle);
    init();

public MyEditText(Context context, AttributeSet attrs) 
    super(context, attrs);
    init();

void init() 
   this.setTextSize(20);
   this.setTypeface(yourTypeFace, Typeface.BOLD);


// method to change font settings
void setFont(TypeFace tf)
   this.setTypeFace(tf);

//add whatever method you want

然后你使用这个类而不是使用EditText,并且不要忘记在你的 XML 中使用

<yourpackage.MyEditText
     android:layout_
     android:layout_
     ... />

【讨论】:

这个我试过了,但我不需要这个。我的需要是完全应用它 嗯好的,那我猜你必须扩展所需的组件并添加方法来更改这些设置 是的,尝试了很多。但没有得到我真正需要的东西。 如何扩展所需的组件并添加方法来更改这些设置?你能推荐我吗? 我更新了我的答案。希望对你有帮助【参考方案2】:

首先获取EditBox的id。 然后选择项目的位置。据此,您可以制作这样的公式:

public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long id) 
    int p=(8+(pos*2));

    editText.setTextSize(p);

【讨论】:

【参考方案3】:

可能的解决方案是创建一个扩展 TextView 的基类,并将此文本视图类用作编辑文本。希望您在第一个屏幕上询问尺寸。在任何情况下,您都可以在基类中设置文本大小。这将解决您的问题。

就像你在 com.example 包中创建这个类,并且类名是 BaseTextView,然后在 xml 文件中而不是你会写

希望这会有所帮助。

【讨论】:

以上是关于如何在 Android 中不使用 XML 的情况下以编程方式动态应用 FontSize? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用xml的情况下修改材质组件的主题?

如何在“发布”版本中不编译某些 Android 菜单项

如何在没有代码的情况下隐藏 Android 布局 xml 中的部分可见视图?

Android中不需要的填充或按钮周围的边距

Android:如何在不使用 PHP 或任何网络服务的情况下将数据发送到远程数据库?

在 JavaScript 中不使用 DOMParser 的 XML 解析