【问题标题】:How to apply FontSize dynamically and programmatically without using XML in Android? [duplicate]如何在 Android 中不使用 XML 的情况下以编程方式动态应用 FontSize? [复制]
【发布时间】: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 单独的。甚至它应该能够在我的整个项目中应用它。但是完全不明白怎么办..

标签: android fonts font-size


【解决方案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_height=".."
     android:layout_width=".."
     ... />

【讨论】:

  • 这个我试过了,但我不需要这个。我的需要是完全应用它
  • 嗯好的,那我猜你必须扩展所需的组件并添加方法来更改这些设置
  • 是的,尝试了很多。但没有得到我真正需要的东西。
  • 如何扩展所需的组件并添加方法来更改这些设置?你能推荐我吗?
  • 我更新了我的答案。希望对你有帮助
【解决方案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 文件中而不是你会写

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2019-11-03
      • 1970-01-01
      相关资源
      最近更新 更多